proposal: rewrite CLAUDE.md with project-specific principles - #8
Open
Tardisyuan wants to merge 1 commit into
Open
Tardisyuan wants to merge 1 commit into
Tardisyuan wants to merge 1 commit into
Conversation
Replaces Ruflo agent configuration (swarm routing, MCP tools, agent spawning) with project-specific development principles: - Core principle: implement first, verify second - Completion criteria with evidence requirements - Verification policy matching CI pipeline - Root cause rule and change impact analysis - Technical debt prioritization (P0/P1/P2) - Review and report rules - Self Improvement workflow for CLAUDE.md changes Discussion: Is this content worth adopting over the current Ruflo config?
Tardisyuan
added a commit
that referenced
this pull request
Aug 14, 2026
The list in populate_egyptian_actors.py called itself the forty-two assessors, held 33 names, and none of them were assessors. They were major deities (Shu, Tefnut, Geb, Nut, Hathor, Ptah, Sekhmet, Bastet), the four sons of Horus, and personified concepts. The source is traceable: a World History Encyclopedia article names "nine great judges: Ra … Shu … Tefnut … Geb … Nut … Isis … Nephthys … Horus … Hathor" in prose above its actual list, and that prose is what got copied. No papyrus seats Geb or Hathor among the forty-two. Two of them, Ra and Maat, collided with real actors and manufactured the duplicates fix_actor_civilization exists to clean up. The real roster comes from Budge reading the Papyrus of Nebseni (BM EA 9900, sheet 30): the 1904 Gods of the Egyptians for the names, the 1898/1901 Book of the Dead for the home towns and confessions, both public domain. The order is cross-checked against UCL's transcription of the Papyrus of Maiherperi — a different papyrus, century and scholar — and matches 42 for 42, with the only four disagreements falling on place names, two of them exactly where Budge had already printed a question mark. Budge is the right source for exactly this and not for much else. What is needed here is the transcription of names and places, which is his solid half; his interpretations are not used. Faulkner and Allen render these as descriptions rather than names — "Far-strider", lowercase "far-strider" — which cannot sit beside Ma'at, Anubis and Osiris in a UI. No migration: powers_json is an existing JSONField that neither seeder had ever written. It carries assessor_index, home_place, negative_confession, source_edition and papyrus. assessor_index is load-bearing rather than decorative — Actor.Meta.ordering is (civilization, role, name), so without it the bench sorts alphabetically, which is simply wrong. Doubt is carried, not resolved. Fifteen rows keep a source_notes caveat: #8 has no home town because the text gives a phrase and not a place, so the empty string is the correct value and a guess would not be; #32's confession is half-unreadable in the scan and stays half; #37, #38 and #39 keep Budge's own question marks; #21, #22 and #23 record where the second witness disagrees rather than quietly picking one. The empty key never appears, so its absence cannot be misread as "checked". name_zh is left blank throughout. These forty-two have no established Chinese names, and get_localized_name() already falls back. Inventing forty-two plausible ones is the exact failure this commit is correcting. The guard on Nefer-Tem (#34) and Basti (#26) covers something nastier than the old bug: the seeder matches on (civilization, name), so seeding Nefertem or Bastet under those spellings would not create a duplicate — it would silently overwrite an assessor, leaving nothing for fix_actor_civilization to find. Ra and Maat at least left evidence. Twelve tests, expectations hand-written rather than imported from the seed table — the same convention as the rest of this file, and the reason the old fake roster survived so long was that nothing asserted it independently. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Tardisyuan
added a commit
that referenced
this pull request
Aug 23, 2026
Design review §4: culpa and the Greek road counts rendered through character-identical markup — one a sum of severity weights, the other a row count. 22 beside 4 reads as "this soul is worse" at a glance, and they are not on one scale. The fork removing colour from the Greek side made them stop matching by accident; the distinction itself still did not exist. Four kinds, not the two proposed. Every numeric field in all four readings was enumerated, and repayment_multiple and the Egyptian heart-to-feather figure are dimensionless ratios while circuit_years and elapsed_years are durations. Forcing those into "magnitude" or "count" would have manufactured the next pair that look alike and are not. Fields that live inside a sentence keep living there — counterweight, culpa_record_count, the multiple, the circuit — because the words already say what they are, and a second figure at the same size is the defect. `poena` gets no kind at all: its type is null, not number | null, and classifying it would assert a quantity that does not exist. Only magnitudes lacked a unit, and none was invented. 分 is the 功過格's own unit — 不善門#8 glosses 一過去功一分 — so borrowing it for Purgatory's culpa or the heart weighing is netting under a new name, and "points" reads as a score. The scale gets named instead of unitised: `weight`, which is honest precisely because it sounds like the implementation's field rather than any source's unit. It says 22 of this system's significance weights and nothing more. The classification lives in the payload type as a Record over the numeric fields, so a new number that is not classified fails tsc, an entry for a field that does not exist fails tsc, and a fifth kind fails tsc — all three measured. The DOM assertions list the figures by hand rather than deriving them from the same table, since a test generated from the classification would endorse any classification. Fixed while measuring: threshold_hint rendered {{weight}} — heart_weight, a magnitude — in the slot that says "N times the feather", correct only because MAAT_FEATHER_WEIGHT is 1. Set the feather to 2 and the headline reads 11× while the sentence says 22, with nothing going red. The sentence now states the two magnitudes and names the scale; the ratio is the headline. Also fixed: two page tests replaced @/lib/api/ledger wholesale with jest.mock, which silently deletes every other export from the module. One went red on this change; the other stayed green only because it never reaches the panel — the double that is wrong where nobody looks. Both use requireActual now and stub the one call. Verified: frontend tsc 0, lint 0, 1072 passed / 67 suites, playwright chromium 38 passed; backend untouched and re-run at 2575 passed / 91.25%. Bundles 1235 -> 1236, all three identical. Ten mutations proven red. Two copy choices are the owner's and are flagged rather than settled: the English scale word, and whether `Aha` is the right term in the constructed Egyptian locale. Reported: an unrelated pre-existing stash was popped by mistake during this work and fully rolled back — HEAD, the index, the stash itself and every live file verified byte-identical afterwards, and the suites re-run. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces current CLAUDE.md (Ruflo agent configuration) with project-specific development principles.
Current HEAD CLAUDE.md (175 lines)
Content: Ruflo/claude-flow agent configuration
npm run build && npm test(frontend only)Problems:
Proposed CLAUDE.md (249 lines)
Content: Project development principles
Comparison
Discussion Questions
Testing
Closes # (if applicable)