Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
- Cycle 8 fixture compare reports visible-projection pass `20/20` for space-carrier arms.
- Chromium `pre` screenshots: U+034F / U+FE00 pixel-equal; U+200C PNG bytes differ.
- Detector-blind GPT-2 / SynthID development scoring on seeds `890000`, `900000`, and `910000` reduced watermarked detections for U+034F space-carrier x1 without unwatermarked inflation on these tiny 4-pair corpora. This is not confirmation and is not a product promotion.
- Cycle 7 Stage D catalog v5 (word-boundary newline) is research-only `PROMISING_DEVELOPMENT` on n=4+4 and remains product-disqualified. Family 12 is not a product carrier.
- Product contract loading uses the embedded v1 payload in installed wheels. Writers that replace pinned `specs/cycle8` tokenizer JSON refuse to run without a GPT-2 encoder; the detector harness still scores when tiktoken is absent. Chromium HTML evidence encodes less-than and greater-than as JSON unicode escapes so an ASCII script terminator cannot close the inline script.

## v0.2.0 — Exact-survival confirmation and release hardening
Expand Down
26 changes: 19 additions & 7 deletions docs/cycle7/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@ Cycle 7 researched collapse-resistant *visible* transforms. Those edits may pres

Cycle 8 (`docs/cycle8/`) is the exact-visible-projection generation. Do not promote Cycle 7 catalogs into `release_transform_registry()`.

## Live state (verified 2026-08-25)
## Live state (verified 2026-08-26)

See `docs/cycle7/live-state-audit.md`. Independent GitHub inspection:

- `main` HEAD `af341884fff211caeb24649a6ce79305c3491c6c` (PR #95 squash-merge)
- Cycle 6 freeze parent `ddccd74a9e0e710085b385fed98959f2730b9d60`
- `main` HEAD `3ab6bd1f98077128a5b8c83ee1f30f89f58d6e77` (PR #97 squash-merge: product-visible invariance / Cycle 8)
- Cycle 7 Stage B/C ancestor `d7eeb0f905b7046ddc4a4d8281354f06713d58b0` (PR #96)
- Cycle 6 freeze ancestor `ddccd74a9e0e710085b385fed98959f2730b9d60`
- PR #93 and PR #94 merged
- Recovery run `32886342498` success
- Aggregate hash `30577aafaffd0c50f0ddb384a4509eb0bb93e4374bf39704869ddbf5053186a4`
Expand All @@ -33,9 +34,10 @@ See `docs/cycle7/seed-ledger.md` and `fuckmark/cycle7/ledger.py`.
| --- | --- | --- |
| Exploratory development (Stage A) | `810000` | used; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage B1) | `860000` | used; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage C1) | `870000` | active; topic frozen as `measurement protocol` |
| Exploratory development / rule construction (Stage C1) | `870000` | used; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage D1) | `890000` | used; do not keep expanding rules against it |
| Validation development (Stage B3) | `820000` | used as Stage B3 disjoint validation; do not retune on it |
| Validation development (Stage C, reserved) | `880000` | unseen until a v4 freeze |
| Validation development (Stage D) | `880000` | used as Stage D disjoint validation of catalog v5; do not retune on it |
| Confirmation reserved | `830000`, `840000`, `850000` | must not be inspected |

Confirmation seeds were chosen as unused 10k blocks before any Cycle 7 detector look.
Expand All @@ -52,7 +54,7 @@ The Cycle 6 frozen sanitizer module is unchanged.

## Durable transform families

See `docs/cycle7/durable-families.md`. Catalog `cycle7-durable-rule-catalog-v4`.
See `docs/cycle7/durable-families.md`. Catalog `cycle7-durable-rule-catalog-v5`.

Stage A (`v2`) families:

Expand All @@ -74,7 +76,11 @@ Stage C (`v4`) additions, aimed at higher natural site density after Stage B sho
10. Clause punctuation newline (`,` / `;` / `:` + space ↔ mark + LF).
11. Optional `of` after `all` / `both` / `half` before a closed determiner/possessive.

These change tokens without relying on repeated U+0020. They survive ASCII whitespace collapse by construction. Family 3 also survives NFKC and Cf-strip. Family 4 is a formatting channel: VERIFIED against the six Cycle 7 sanitizer variants, not against an unlisted reflow sanitizer.
Stage D (`v5`) addition, aimed at a collapse-resistant channel denser than clause punctuation rather than another lexical whitelist:

12. Word-boundary newline (ASCII space between two alphabetic words of length ≥2 ↔ LF).

These change tokens without relying on repeated U+0020. They survive ASCII whitespace collapse by construction. Family 3 also survives NFKC and Cf-strip. Families 4, 10, and 12 are formatting channels: VERIFIED against the six Cycle 7 sanitizer variants, not against an unlisted reflow sanitizer.

Quote interiors may receive these durable edits under `quote-container-durable-v1` without changing quote delimiters. Cycle 6 `quote-container-surface-spacing-v1` still admits only spacing inside quotes.

Expand All @@ -96,6 +102,12 @@ Seed `820000` is spent as validation. Seed `880000` is the next unused validatio

Stage C1 on seed `870000` (topic frozen as `measurement protocol`) added clause-punctuation newlines and optional quantifier `of`. Mean durable candidates: **4.75** (still the Stage B four-site regime). Quantifier `of` mean **0.00**. Collapse-surviving intact/root **0.715**. Detector: durable **3/4** after collapse; Cycle 6 spacing **4/4** after collapse. Overall: **`INSUFFICIENT_EVIDENCE`**. Seed `880000` was not inspected. Details: `docs/cycle7/stage-c-decision.md`.

## Stage D

Stage D1 on seed `890000` (topic frozen as `document structure`) added word-boundary newlines. Mean durable candidates: **38.0**. Collapse-surviving intact/root **0.164**. Detector: durable **0/4** after collapse; Cycle 6 spacing **3/4** after collapse. Cycle 8 later used the same seed base with topic `invisible carrier development` and a disjoint corpus; Stage D evidence is the `document structure` texts only.

Disjoint validation seed `880000` (topic frozen as `independent check`) replicated: mean **44.875**, collapsed intact/root **0.080**, durable **0/4** after collapse, Cycle 6 spacing **4/4** after collapse. Overall: **`PROMISING_DEVELOPMENT`**. Not formal confirmation. Catalog v5 remains **PRODUCT_DISQUALIFIED** for the CLI. Details: `docs/cycle7/stage-d-decision.md`.

Not claimed:

- Cycle 7 formal confirmation
Expand Down
26 changes: 25 additions & 1 deletion docs/cycle7/durable-families.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Cycle 7 durable families

Catalog identity: `cycle7-durable-rule-catalog-v4` (Stage C development). Families 1–3 remain the frozen Stage A `v2` set; families 4–9 remain the frozen Stage B `v3` set. Cycle 6 `quote_safe_zrd` ruleset hash is unchanged.
Catalog identity: `cycle7-durable-rule-catalog-v5` (Stage D development). Families 1–3 remain the frozen Stage A `v2` set; families 4–9 remain the frozen Stage B `v3` set; families 10–11 remain the frozen Stage C `v4` set. Cycle 6 `quote_safe_zrd` ruleset hash is unchanged.

All families below are deterministic, detector-blind, key-blind, and non-neural. Cycle 6 `quote_safe_zrd` ruleset hash is unchanged.

Expand Down Expand Up @@ -227,3 +227,27 @@ False positives blocked: `all of them` / `both of us` / `half of it` (pronouns r

EXTERNAL-VALIDATION-ONLY: Cambridge Grammar of English / English Grammar Today: `all`, `both`, and `half` may appear with or without `of` before articles, demonstratives, and possessives, with no meaning change. Pronoun objects keep obligatory `of`. That literature is not a local TinyDev density measurement.

## Family 12 — word-boundary newline

Construction: `word_boundary_newline`.

This is the Stage D density primitive. It is not another closed lexical whitelist. It is the collapse-resistant analogue of Cycle 6 general word spacing: replace a single ASCII space between two alphabetic words with a single LF, or the reverse.

Precondition: both sides are ASCII alphabetic runs of length at least 2. Single-letter words (`a`, `I`), digits, punctuation-adjacent spaces (`. `, `, `, `: `), and already-newline punctuation sites do not match. Protected spans still block overlapping edits.

Rewrite: `The protocol` ↔ `The\nprotocol`.

Inverse: the opposite direction.

Tokenizer: GPT-2 `The protocol remains fixed` versus `The\nprotocol remains fixed` differs. VERIFIED on the frozen GPT-2 revision when transformers is present.

Whitespace collapse: `whitespace-collapse-v1` preserves LF. The rewrite still differs after `ws_collapse` and `ws_collapse_nfkc_cf_strip`. VERIFIED on fixtures.

Sanitizer note: this is a layout/formatting channel, denser than Families 4 and 10. HYPOTHESIS: a wrap/reflow sanitizer would erase it. It is admitted because Stages B and C showed punctuation-newline was the only durable family with repeated natural sites, and those sites were still too sparse (mean ~4–4.75) to replace Cycle 6 spacing after collapse.

Conflict geometry: adjacent word-boundary spaces do not overlap (each candidate is the one-character separator). Cover-greedy v4 can spend the B14 budget on up to 14 wraps. Format punctuation newlines remain separate spans.

Not admitted: extra U+0020 insertion, NBSP, ZWSP, wrapping after length-1 words, or converting punctuation spaces that Families 4 and 10 already own.

Adjacent-sentence transposition remains a HYPOTHESIS for a later stage. It is not in catalog v5, so cover-greedy cannot spend the B14 budget on one long overlapping swap that would starve this dense channel.

4 changes: 3 additions & 1 deletion docs/cycle7/literature.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,7 @@ REJECTED: running-text `and` to `&` (not prose-equivalent under CMOS/AP). U+2026

EXTERNAL-VALIDATION-ONLY. Cambridge English Grammar Today: `all`, `both`, and `half` allow optional `of` before articles, demonstratives, and possessives (`all the` / `all of the`) with no meaning change; `of` is obligatory before personal pronouns (`all of them`). Family 11 encodes that bound. That literature is not a local density measurement.

HYPOTHESIS. Clause commas are much more common than sentence terminals on ordinary prose, so Family 10 should raise layout-channel density relative to Family 4 alone. Whether that is enough to replace Cycle 6 spacing after `whitespace-collapse-v1` is a Stage C measurement, not a theorem.
HYPOTHESIS. Clause commas are much more common than sentence terminals on ordinary prose, so Family 10 should raise layout-channel density relative to Family 4 alone. Stage C on seed `870000` measured mean 1.50 clause sites and did not escape the four-site regime. VERIFIED on that seed only.

HYPOTHESIS. Replacing ordinary word-boundary U+0020 with LF is the collapse-resistant analogue of Cycle 6 general word spacing. `whitespace-collapse-v1` preserves LF, so the token change remains after that sanitizer. VERIFIED on seeds `890000` and `880000` under catalog v5: mean wrap-site density 33.375 and 37.875, collapsed intact/root 0.164 and 0.080, durable detections 0/4 after collapse on both n=4 snapshots, Cycle 6 spacing 3/4 and 4/4 after collapse. That is development evidence, not 192-row confirmation. HYPOTHESIS: a wrap/reflow sanitizer would erase it.

24 changes: 17 additions & 7 deletions docs/cycle7/live-state-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,27 @@ Live GitHub still has `main` at `ddccd74a9e0e710085b385fed98959f2730b9d60`. Open

Hygiene-only follow-up `6e587ea016cf5a2f4e7845a5550f97e0b5d92b34` made Release Readiness Baseline and CI succeed after `tests/test_repository_hygiene.py` rejected comments/docstrings in new Python. Cycle 6 sealed confirmation on that SHA succeeded. Codex review was usage-limited, not a code finding. CodeRabbit did not auto-review (repository star threshold).

## Continuation (2026-08-25, after PR #95 squash-merge)
## Continuation (2026-08-25, after PR #96 squash-merge)

PR #95 squash-merged at 2026-08-25 21:23:21 UTC after all 41 head checks succeeded and `mergeStateStatus` was `CLEAN`. No unresolved review threads.
PR #96 squash-merged at 2026-08-25 21:26:26 UTC. Title remained `Cycle 7 Stage B: high-density durable catalog v3`; the branch also contained Stage C catalog v4 and C1 evidence.

Verified `main` HEAD: `af341884fff211caeb24649a6ce79305c3491c6c`
Verified `main` HEAD: `d7eeb0f905b7046ddc4a4d8281354f06713d58b0`

Subject: `Cycle 7 Stage A: collapse-resistant durable transforms (#95)`
Subject: `Cycle 7 Stage B: high-density durable catalog v3 (#96)`

Parent freeze commit remains `ddccd74a9e0e710085b385fed98959f2730b9d60`. Cycle 6 formal result is unchanged: `NONZERO_RESIDUAL` 7/192.
Cycle 6 formal result is unchanged: `NONZERO_RESIDUAL` 7/192.

Open PR after the merge: [#96](https://github.com/byte271/FuckMark/pull/96) on `cursor/cycle7-stage-b-density-3fb1`, rebased onto `main` and retargeted. Open issues: none.
Open PR after the merge: [#97](https://github.com/byte271/FuckMark/pull/97) (`cursor/product-visible-invariance-2d93`, draft, Cycle 8 / user-visible invariance). That work is separate from Cycle 7 catalog development.

Changing the PR base from `research/cycle7-durable-transforms` to `main` does not emit `pull_request` `synchronize`, so Actions on the rebase SHA must be retriggered by a follow-up push. Do not treat a CodeRabbit-only success as full CI.
Stage C1 on seed `870000` was `INSUFFICIENT_EVIDENCE` (mean durable candidates 4.75; durable detector 3/4 after collapse). Seed `880000` was not inspected.

## Continuation (2026-08-26, after PR #97 squash-merge)

Verified `main` HEAD: `3ab6bd1f98077128a5b8c83ee1f30f89f58d6e77`

Subject: `Restore exact user-visible invariance and start Cycle 8 carrier research (#97)`

Cycle 6 formal result is unchanged: `NONZERO_RESIDUAL` 7/192. Cycle 7 visible-edit catalogs are **PRODUCT_DISQUALIFIED** for the CLI.

PR [#98](https://github.com/byte271/FuckMark/pull/98) (`cursor/cycle7-stage-d-wrap-3fb1`) was closed unmerged when #97 landed, then rebased onto this `main`. Cycle 8 exploratory seed `890000` / topic `invisible carrier development` and Cycle 7 Stage D seed `890000` / topic `document structure` share pair seeds but have disjoint text hashes. Cycle 7 Stage D validation used `880000`; Cycle 8 still must not inspect it. Confirmation seeds `830000` / `840000` / `850000` were not inspected.

19 changes: 13 additions & 6 deletions docs/cycle7/seed-ledger.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Cycle 7 seed ledger

Ledger identity: `cycle7-seed-ledger-v3` (`fuckmark/cycle7/ledger.py`).
Ledger identity: `cycle7-seed-ledger-v4` (`fuckmark/cycle7/ledger.py`).

Seeds were assigned **before** Cycle 7 detector scoring. Seed `860000` and topic `independent replication` were frozen in the ledger **before** any Stage B generation or detector look. Seed `870000` and topic `measurement protocol` were frozen **before** any Stage C generation or detector look. Seed `880000` and topic `independent check` were frozen as the next unused validation split **before** any Stage C validation generation.
Seeds were assigned **before** Cycle 7 detector scoring. Seed `860000` and topic `independent replication` were frozen in the ledger **before** any Stage B generation or detector look. Seed `870000` and topic `measurement protocol` were frozen **before** any Stage C generation or detector look. Seed `880000` and topic `independent check` were frozen as the next unused validation split **before** any Stage C validation generation. Seed `890000` and topic `document structure` were frozen **before** any Stage D generation or detector look.

## Spent (forbidden)

Expand All @@ -19,18 +19,25 @@ Seeds were assigned **before** Cycle 7 detector scoring. Seed `860000` and topic
| --- | --- | --- |
| Exploratory development (Stage A) | 810000 | yes, development only; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage B1) | 860000 | used; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage C1) | 870000 | yes, development only; frozen topic `measurement protocol` |
| Exploratory development / rule construction (Stage C1) | 870000 | used; do not keep expanding rules against it |
| Exploratory development / rule construction (Stage D1) | 890000 | used; do not keep expanding rules against it |
| Validation development (Stage B3) | 820000 | used as Stage B3 disjoint validation; do not retune on it |
| Validation development (Stage C, reserved) | 880000 | **not yet inspected**; reserved until catalog v4 is frozen |
| Validation development (Stage C/D) | 880000 | used as Stage D disjoint validation of catalog v5; do not retune on it |
| Confirmation reserved | 830000, 840000, 850000 | **no** until a later frozen confirmation protocol |

Do not promote 810000, 820000, 860000, 870000, or 880000 into confirmation after seeing scores.
Do not promote 810000, 820000, 860000, 870000, 880000, or 890000 into confirmation after seeing scores.

Stage A generation used 810000 with pair stride 32, matching TinyDev pairing, one pair per domain, topic `reproducibility` chosen without a detector look.

Stage B1 generation used 860000 with the same pairing rule and topic `independent replication`. Seed 810000 remains an exploratory seed for Stage A rescoring only.

Validation generation used 820000 with topic `held-out evaluation`. That topic was frozen before validation generation. Do not retune catalog v3 on 820000. A later revised mechanism must not recycle 820000; Stage C reserved 880000 instead.

Stage C1 generation uses 870000 with topic `measurement protocol`. Rule-construction generation must call `assert_rule_construction_seed(870000)`.
Stage C1 generation used 870000 with topic `measurement protocol`. That seed is now used. Do not retune catalog v4 on 870000.

Stage D1 generation used 890000 with topic `document structure`. Fresh rule-construction generation must call `assert_rule_construction_seed(890000)` and is now locked. Replay of the frozen D1 evidence via `--samples-from` uses exploratory-development admission so 890000 can be rescored. Do not retune catalog v5 on 890000.

Cycle 8 independently assigned the same seed base `890000` with topic `invisible carrier development` and generated a different TinyDev corpus (same pair seeds `890000`/`890032`/`890064`/`890096`, disjoint text hashes). Stage D evidence is the `document structure` texts only. Do not retune Cycle 7 on Cycle 8 texts, or Cycle 8 on Stage D texts. Cycle 8 seeds `900000`, `910000`, and `920000` are not Cycle 7 data.

Stage D validation used 880000 with topic `independent check`. Do not retune catalog v5 on 880000. Cycle 8 must still not inspect 880000. A later revised mechanism must reserve a new unused validation seed.

Loading
Loading