Skip to content
Merged
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
42 changes: 36 additions & 6 deletions docs/cycle7/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ This directory starts Cycle 7 development. It does not retune Cycle 6 and does n

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

See `docs/cycle7/live-state-audit.md`. Independent GitHub inspection matched the Cycle 6 freeze:
See `docs/cycle7/live-state-audit.md`. Independent GitHub inspection:

- `main` HEAD `ddccd74a9e0e710085b385fed98959f2730b9d60`
- `main` HEAD `af341884fff211caeb24649a6ce79305c3491c6c` (PR #95 squash-merge)
- Cycle 6 freeze parent `ddccd74a9e0e710085b385fed98959f2730b9d60`
- PR #93 and PR #94 merged
- Recovery run `32886342498` success
- Aggregate hash `30577aafaffd0c50f0ddb384a4509eb0bb93e4374bf39704869ddbf5053186a4`
Expand All @@ -28,8 +29,11 @@ See `docs/cycle7/seed-ledger.md` and `fuckmark/cycle7/ledger.py`.

| Role | Seed base | Status |
| --- | --- | --- |
| Exploratory development (Stage A) | `810000` | in use |
| Validation development (Stage B) | `820000` | reserved, unused |
| 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` |
| 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 |
| 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 @@ -46,13 +50,29 @@ The Cycle 6 frozen sanitizer module is unchanged.

## Durable transform families

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

Stage A (`v2`) families:

1. Unambiguous contractions and closed orthography (Family 1).
2. Attested open ↔ hyphenated compounds (Family 2).
3. In-word ASCII apostrophe ↔ U+2019 (Family 3).

These change tokens without relying on repeated U+0020. They survive ASCII whitespace collapse by construction. Family 3 also survives NFKC and Cf-strip.
Stage B (`v3`) additions, aimed at natural site density:

4. Sentence-boundary newline (layout; survives `whitespace-collapse-v1` because that sanitizer keeps LF).
5. Bounded optional complementizer / object-relative `that`.
6. Sentence-initial discourse comma.
7. Attested prenominal hyphen modifiers.
8. Parenthetical conjunctive adverb.
9. Coordinating-conjunction comma (`and`/`but`/`or`), with determiner-gated insert.

Stage C (`v4`) additions, aimed at higher natural site density after Stage B showed families 5–9 were sparse:

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.

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 @@ -64,6 +84,16 @@ Families 2–3 raise candidate density on the same frozen texts (see `evidence/c

Details: `docs/cycle7/stage-a-decision.md`.

## Stage B

Stage B1 on seed `860000` looked **`PROMISING_DEVELOPMENT`** on a tiny detector snapshot (durable 2/4 after collapse). Disjoint validation seed `820000` reproduced density/geometry but **not** the detector reduction (durable 4/4 after collapse). Overall Stage B decision: **`INSUFFICIENT_EVIDENCE`**. Details: `docs/cycle7/stage-b-decision.md`.

Seed `820000` is spent as validation. Seed `880000` is the next unused validation split and has not been inspected. Seeds `830000` / `840000` / `850000` remain unseen confirmation reserves.

## Stage C

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`.

Not claimed:

- Cycle 7 formal confirmation
Expand Down
141 changes: 140 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-v2`.
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.

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 @@ -88,3 +88,142 @@ Conflict geometry: an apostrophe edit overlaps contraction expansion of the same
text change → tokenization change → n-gram/context change → observation replacement → g-value drift → score drop.

Byte change or a one-off score drop is not enough. Family 1–3 have VERIFIED tokenization change and collapse survival on fixtures. Detector attachment on TinyDev 64-token text is a separate density question.

## Family 4 — sentence-boundary newline

Construction: `sentence_boundary_newline`.

Precondition: `. ` / `? ` / `! ` immediately before an uppercase letter. Exclusions: digits before the mark, single-letter initials, a closed abbreviation list (`Dr.`, `Fig.`, `U.S.`, months, `etc.`), already-newline after the mark, and ellipsis/multi-punctuation (`... Next`).

Rewrite: swap the single ASCII space after sentence punctuation for a single LF, or the reverse.

Inverse: the opposite direction.

Tokenizer: GPT-2 `Hello. World` vs `Hello.\nWorld` is `[15496, 13, 2159]` vs `[15496, 13, 198, 10603]`. VERIFIED on frozen revision `607a30d783dfa663caf39e06633721c8d4cfcd7e`.

Whitespace collapse: `whitespace-collapse-v1` preserves newlines. The rewrite still differs after `ws_collapse` and `ws_collapse_nfkc_cf_strip`. VERIFIED on fixtures. LF is category Cc, not Cf.

Sanitizer note: this is a layout/formatting channel. A wrap/reflow sanitizer is not in the Cycle 7 frozen sanitizer suite. Survival is VERIFIED only against the six listed Cycle 7 variants. HYPOTHESIS: a paragraph-reflow sanitizer would erase it.

Conflict geometry: adjacent sentence boundaries do not overlap. Format edits can still compete with spacing for the B14 budget in the combined arm.

## Family 5 — bounded optional complementizer / object-relative `that`

Construction: `bounded_complementizer_that_drop`, `bounded_complementizer_that_insert`, `bounded_object_relative_that_drop`.

Precondition (drop): pronoun + closed attitude/report verb immediately before ` that `, and a closed clause-starter after it. Object-relative drop: determiner + noun of length at least 3 before ` that `, then a subject pronoun + lowercase word.

Precondition (insert): the same pronoun+verb pattern with a clause-starter and no `that` already present. The stored source `I think ` is a sentinel; matching uses the shared complementizer pattern.

Rewrite: delete or insert optional `that`.

Inverse: insert vs drop on the complementizer pair. Object-relative drop is one-way in v3.

Tokenizer: GPT-2 `I think that the protocol works` versus `I think the protocol works` differs by the `that` token. VERIFIED on the frozen GPT-2 revision.

Whitespace collapse: the edit is a word, not spaces. Survives.

False positives blocked: `I found that book`, `so that the logs`, all-caps.

EXTERNAL-VALIDATION-ONLY: optional complementizer *that* is a high-frequency English alternation in the UID/Jaeger literature. Local admission still requires the closed verb list.

## Family 6 — sentence-initial discourse comma

Construction: `sentence_initial_discourse_comma`.

Closed markers include `However`, `Therefore`, `Moreover`, `In fact`, and other listed conjunctive adverbs.

Precondition: sentence-initial (start or after `.?!`). Insert is blocked before degree-adverb followers (`much`, `many`, `long`, and the listed set) so `However much evidence` is not rewritten as `However, much evidence`.

Rewrite: drop or insert the comma after the marker.

Tokenizer: comma token appears or disappears. HYPOTHESIS on TinyDev density: sparse unless the sample uses discourse markers.

Whitespace collapse: comma is not space. Survives.

## Family 7 — attested prenominal hyphen modifiers

Construction: `attested_prenominal_hyphen_modifier`.

Closed list includes `well known` / `well-known`, `long term` / `long-term`, `open source` / `open-source`, and other listed prenominal compounds.

Precondition: same hyphen-chain/path guards as Family 2. Hyphenation additionally requires a following lowercase noun so predicative `The method is well known.` does not fire.

Rewrite: open / hyphenated.

Tokenizer: hyphenation splits GPT-2 pieces. VERIFIED locally for `well known` / `well-known`.

Whitespace collapse: hyphens are not spaces. Survives.

EXTERNAL-VALIDATION-ONLY: CMOS hyphenates compound modifiers before a noun. Predicative forms stay open.

## Family 8 — parenthetical conjunctive adverb

Construction: `parenthetical_conjunctive_adverb`.

Closed adverbs: `however`, `therefore`, `moreover`, and the listed set.

Precondition: previous character alphabetic; drop matches `, however, `; insert matches ` however ` and does not fire on already-comma forms.

Rewrite: `, however, ` / ` however `.

Whitespace collapse: commas remain. Survives.

## Family 9 — coordinating-conjunction comma

Construction: `coordinating_conjunction_comma`.

Closed conjunctions: `and`, `but`, `or`.

Precondition: previous character alphabetic and next character alphabetic. Insert additionally requires a determiner follower (`the|a|an|this|these|those`) so `you and I` and `cats and dogs` do not gain a comma. Digit-comma lists such as `1, and 2` are blocked.

Rewrite: `, and ` / ` and ` (same for `but` / `or`).

Tokenizer: GPT-2 `failed and the replica` versus `failed, and the replica` differs by the comma token. VERIFIED on the frozen GPT-2 revision.

Whitespace collapse: comma is not space. Survives.

Safety: insert is a style comma before a determiner, not a full independent-clause parser. NP coordinations of the form `X and the Y` can still receive a comma. That is semantically conservative and style-marked. Stage B treats density as the first metric and may reject the insert direction if natural prose over-fires.

Not admitted: `nor` / `yet` / `so` (adverb/conjunction ambiguity). Running-text `and` to `&` remains REJECTED (CMOS/AP: ampersand is not prose-equivalent).

## Family 10 — clause punctuation newline

Construction: `clause_punctuation_newline`.

Precondition: `, ` / `; ` / `: ` immediately before an alphabetic word of length at least 2. Exclusions: start of string, digits immediately before the mark (thousands separators, `v2, and`), other punctuation immediately before the mark, already-newline after the mark, and single-letter followers (`Hello, X` / `a, b`).

Rewrite: swap the single ASCII space after the clause mark for a single LF, or the reverse.

Inverse: the opposite direction.

Tokenizer: GPT-2 `Hello, World` versus `Hello,\nWorld` differs. VERIFIED on frozen revision `607a30d783dfa663caf39e06633721c8d4cfcd7e` when transformers is present.

Whitespace collapse: same as Family 4. `whitespace-collapse-v1` preserves LF. VERIFIED on fixtures against all six Cycle 7 sanitizer variants.

Sanitizer note: this is still a layout/formatting channel. HYPOTHESIS: a wrap/reflow sanitizer would erase it. It is admitted because Stage B showed sentence-boundary newlines were the only family that raised natural site density, and clause commas are much more common than sentence terminals on ordinary prose.

Conflict geometry: `, and ` overlaps Family 9 coordinating-comma drop. Cover-greedy v4 remains detector-blind.

Not admitted: generic extra spaces, NBSP, ZWSP, or converting commas to other Unicode spaces.

## Family 11 — quantifier `of` before a determiner

Construction: `quantifier_of_determiner`.

Closed quantifiers: `all`, `both`, `half`. Closed followers: `the`, `this`, `that`, `these`, `those`, and the possessives `my` / `our` / `your` / `their` / `his` / `her`. `both` does not pair with singular `this` / `that`.

Precondition: whole-word match plus the same hyphen/slash/alnum adjacency guard as Family 2. All-caps blocked.

Rewrite: `all of the` ↔ `all the` (and the other closed pairs).

Inverse: the opposite direction in the same closed list.

Tokenizer: GPT-2 `All of the replicas failed` versus `All the replicas failed` differs. VERIFIED on the frozen GPT-2 revision when transformers is present.

Whitespace collapse: the edit is the word `of`, not spaces. Survives.

False positives blocked: `all of them` / `both of us` / `half of it` (pronouns require `of`), `all of a sudden`, `some/most/each of the` (those quantifiers are not optional-`of` in the same way).

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.

19 changes: 19 additions & 0 deletions docs/cycle7/literature.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,23 @@ VERIFIED sanitizer fate:

HYPOTHESIS. Unambiguous contractions, attested hyphenation, and typographic apostrophes can destroy some observation windows. Whether they destroy enough windows on 64-token TinyDev GPT-2 text is a Cycle 7 measurement. Family 1 detector attachment on seed `810000` was INSUFFICIENT_EVIDENCE because natural site density was too low.

EXTERNAL-VALIDATION-ONLY. Optional complementizer *that* is a high-frequency English reduction (Jaeger, *Cognitive Psychology* 2010, UID/information-density accounts). Cycle 7 admits only a closed pronoun+verb list plus object-relative `DET+N that PRON`. That literature is not a local density measurement.

EXTERNAL-VALIDATION-ONLY. CMOS hyphenates compound modifiers before a noun (`well-known method`) and leaves predicative forms open. Family 7 encodes that bound, not a generic hyphenation whitelist.

VERIFIED tokenizer effects added in catalog v3 on the same frozen GPT-2 revision:

- `Hello. World` → `[15496, 13, 2159]`; `Hello.\nWorld` → `[15496, 13, 198, 10603]`.
- `I think that the protocol works` versus `I think the protocol works` differs by the `that` piece.
- `failed and the replica` versus `failed, and the replica` differs by the comma piece.

HYPOTHESIS. Sentence-boundary newline survives `whitespace-collapse-v1` because that sanitizer preserves LF. A wrap/reflow sanitizer is not in the frozen Cycle 7 suite.

REJECTED as a Cycle 7 direction: adding more U+0020 spaces to chase 7/192 → 0/192 on spent confirmation rows.

REJECTED: running-text `and` to `&` (not prose-equivalent under CMOS/AP). U+2026 ellipsis NFKC-maps to `...`. U+2009 / U+202F NFKC-map to space.

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.

14 changes: 14 additions & 0 deletions docs/cycle7/live-state-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,17 @@ 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)

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.

Verified `main` HEAD: `af341884fff211caeb24649a6ce79305c3491c6c`

Subject: `Cycle 7 Stage A: collapse-resistant durable transforms (#95)`

Parent freeze commit remains `ddccd74a9e0e710085b385fed98959f2730b9d60`. 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.

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.

22 changes: 16 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-v1` (`fuckmark/cycle7/ledger.py`).
Ledger identity: `cycle7-seed-ledger-v3` (`fuckmark/cycle7/ledger.py`).

Seeds were assigned **before** Cycle 7 detector scoring.
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.

## Spent (forbidden)

Expand All @@ -17,10 +17,20 @@ Seeds were assigned **before** Cycle 7 detector scoring.

| Role | Seed | May score detectors? |
| --- | --- | --- |
| Exploratory development (Stage A) | 810000 | yes, development only |
| Validation development (Stage B) | 820000 | only after Stage A family freeze; not in this PR's detector run |
| 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` |
| 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 |
| Confirmation reserved | 830000, 840000, 850000 | **no** until a later frozen confirmation protocol |

Do not promote 810000 or 820000 into confirmation after seeing scores.
Do not promote 810000, 820000, 860000, 870000, or 880000 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 A generation uses 810000 with pair stride 32, matching TinyDev pairing, one pair per domain, topic `reproducibility` chosen without a detector look.
Loading
Loading