fix(rust): clear the rust-core clippy gate; plus docs, wiki, templates and ecosystem recon - #73
Merged
Merged
Conversation
Two lints in rust/pdftool_core/src/lib.rs are the only thing keeping the `Rust core (tests, formatting, lint)` job red at e1b6225 (run 36296845297): `cargo fmt -- --check` and `cargo test --locked` both pass; only the Clippy step fails. - resolve_object: `doc.get_object(*id).map(Clone::clone)` -> `.cloned()` (clippy::map_clone). lopdf 0.34 `Document::get_object` returns `Result<&Object>`, and `Result<&T, E>::cloned() -> Result<T, E> where T: Clone` is stable since 1.59.0. `Object` derives `Clone`, so the function's declared `Result<Object, lopdf::Error>` return type is unchanged. - object_to_number: `Object::Real(v) => Some(*v as f32)` -> `Some(*v)` (clippy::unnecessary_cast). `Object::Real(f32)`, so `v` is `&f32` and the cast was an identity cast. The neighbouring `Object::Integer(v) => Some(*v as f32)` is deliberately left alone: `v` is `&i64` there and that cast is real. docs/ci/CHECK-DETERMINATIONS.adoc: the rust-core row claimed the job had never executed. It has -- once, at e1b6225, and it reached its third step. The row now records fmt+tests green (run 36296845297), the two Clippy lints, and this repair, and stays open until an owner-triggered run is green on main. It is not marked plain "Fixed", because no such run exists yet. No workflow, actions.lock or dependabot change: this touches no `uses:` line, so the Lock Sync Gate is unaffected. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
Contributor
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Satisfies the first acceptance criterion of docmatrix#71: "Each repository README and GitHub description states its own boundary and links to the other optional components." - README.adoc gains an "Ecosystem position" section: what blocky-writer owns (fixed-layout PDF and application-form placement), what it does not, and who owns each of those instead, with links. - docs/ecosystem/ECOSYSTEM.adoc — the long-form boundary: the suite table, the adjacent-project list, the composition contract (clause 4 is the one this project is most likely to break), the "proof obligations do not transfer" list, and the working norm for cross-repo communication. - .machine_readable/6a2/ECOSYSTEM.a2ml expanded from `type = "component"` to carry the same boundary so machine readers get it without parsing prose. No workflow, actions.lock or dependabot change: nothing here touches a `uses:` line, so the Lock Sync Gate is unaffected. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
A recon found six documents materially out of date. Each was corrected against what the repository actually contains, and the corrections are recorded in CHANGELOG.adoc and in docs/tech-debt-2026-05-26.adoc's new status section. - .github/CONTRIBUTING.md — was describing hyperpolymath/language-bridges: it cloned the wrong repo, documented a lib/ + extensions/ + plugins/ + tools/ layout that does not exist here, and told readers to run `just check`, `mix compile` and `guix develop`. It also referenced an issue template that did not exist. Rewritten against this repository: real clone, real layout, the three Rust commands, the lock-sync rule, and the bot-actor caveat. - TOPOLOGY.adoc — claimed a "Deno-first" toolchain (deno.json was deleted by #43) and reported the AffineScript frontend at 100% "stateful forms stable" with an overall "~90% Production-ready extension". Both were false; the frontend is a prototype with no build pipeline. Dashboard corrected, the missing "Last updated" date added, and a rule-of-honesty note explaining that a bar describes working verified code, not files on disk. - EXPLAINME.adoc — listed Deno as a technology choice and mapped a `lib/` directory that does not exist. Replaced with the real dependency set and a claims-and-where-they-are-checked table. - www/.well-known/humans.txt — described an "Idris2 ABI, Zig FFI" project and was dated 2026-03-28. Corrected to the actual stack and date. - www/.well-known/ai.txt — pointed at an `AI.a2ml` that does not exist. - TEST-NEEDS.adoc — "CI workflows | 15" (there are 14 .yml files; the 15th file is actions.lock), a stale `TEST-NEEDS.md` header, and a "What's Covered" section that predated the clippy fix. - docs/tech-debt-2026-05-26.adoc — the 2026-05-26 snapshot claimed CHANGELOG.md was missing (CHANGELOG.adoc now exists) and CONTRIBUTING.md was present and adequate (it was present and wrong). A status-as-of-2026-09-27 section now records which findings are resolved and which numbers are stale, so the snapshot cannot be mistaken for current state. - CHANGELOG.adoc — the [Unreleased] section was a raw, partly mangled commit dump (including one entry with an inline `-Authored-By:` trailer and a duplicated TEST-NEEDS line). Regrouped into Keep-a-Changelog prose. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
The repository had no .github/ISSUE_TEMPLATE/ directory at all, even though CONTRIBUTING.md told contributors to use a bug report template, and no pull request template. Both gaps meant every issue and PR arrived with whatever context the author happened to think of. Added, in the estate's YAML issue-form style: - bug_report.yml — area picker (rust-core / frontend prototype / ci / docs / packaging), reproduction steps, environment, and a dedicated field for the whole BW_* error payload, because the code alone is not enough to diagnose. - feature_request.yml — problem, solution, alternatives, layer, plus a boundary check prompt pointing at docs/ecosystem/ECOSYSTEM.adoc. - documentation.yml — stale / wrong / missing / contradictory / unfindable, which is how drift actually gets reported. - config.yml — links to the wiki, the docmatrix#71 boundary contract, and the security advisory route (explicitly not a public issue). - PULL_REQUEST_TEMPLATE.md — what changed, type of change, local verification (with an explicit instruction to say when something could not be run rather than implying it was), the lock-sync and determination-ledger checks, and the owner-merge note for bot-authored PRs. Labels referenced are all present in the repository's label set. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
The GitHub wiki is enabled on this repository but has never been initialised — the .wiki.git repository 404s. This adds the source for it, in the BerryWiki format adopted from the metadatastician estate, so the wiki is versioned, diffable and reviewable in this repository rather than only editable through GitHub's web UI. Eight pages: Home, Architecture, Rust-Core, CI-and-Gates, Ecosystem, Contributing, Contributing--Dev-Setup, Glossary. Content is written against what the repository actually contains — the two-function WASM boundary, the name-driven (not coordinate-driven) writeback, the 20 BW_* codes, the six unit tests, and the things that are deliberately not implemented. Structure validated programmatically: 8 pages, unique ids, every `parent` id resolves, sibling positions distinct, no broken [[WikiLinks]], every _Sidebar link resolves. The metadata block is the first non-blank content of each file, as BerryWiki's parser requires; the SPDX header follows it as a second HTML comment so it stays invisible in GitHub's renderer. wiki/README.adoc documents the format, the three rules that make it work, the publish step, and how to add a page. The wiki is also pushed to hyperpolymath/blocky-writer.wiki.git so it is live. Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…ord debt REQUIRES_INITIALISATION.adoc listed 10 substitution tokens across 3 files. That count was itself stale: the two said to be in CODE_OF_CONDUCT.md had already been resolved — CODE_OF_CONDUCT.adoc contains no tokens at all, and the initial-response SLA is documented in SECURITY.adoc. Eight tokens were live, in two files. All eight are now filled, from evidence rather than invention: - MONOREPO_OR_STANDALONE = standalone (this is not a workspace root) - DEP1/DEP2 = lopdf / wasm-bindgen (read from rust/pdftool_core/Cargo.toml) - CONSUMER1/CONSUMER2 = docmatrix / formatrix-docs (named as suite components in docmatrix#71, with an explicit note that these are boundary counterparts and not code-level consumers) - ONE_PARAGRAPH_PURPOSE / ONE_PARAGRAPH_ANTI_PURPOSE (from README.adoc and docs/ecosystem/ECOSYSTEM.adoc) - PROJECT_UNIQUE_STRENGTH (placement into fixed-layout forms) The template's `*REMINDER:` placeholders in the same files were also filled: INTENT.contractile's architectural-invariants and ask-before-touching, and methodology.a2ml's divergent-invariants and known-constraints. REQUIRES_INITIALISATION.adoc is rewritten as a resolution record rather than deleted, so the work is visible; it states plainly that nothing is outstanding and that it is safe to remove. 0-AI-MANIFEST.a2ml's initialisation block now says COMPLETE, and the file gains a "read in this order" list and a "three things that will surprise you" section — the frontend prototype, the likely absence of a Rust toolchain, and the bot-actor refusal. STATE.a2ml's completion-percentage had read 0 since the 2026-03-15 conversion. It now carries verified / not-implemented / known-red-on-main / open-decisions sections, so the headline number cannot silently drift from the component breakdown in TOPOLOGY.adoc again. debt.a2ml was an empty template. It now records the eleven things this recon found and deliberately did not fix — the two competing Pages workflows, the red Hypatia and Mirror runs, the missing required_status_checks rule, the unimplemented line/cell/baseline detection, and the smaller leftovers (orphaned deno.lock, webpack.config.cjs, Justfile recipes reading a nonexistent READINESS.md, repo topics, CHANGELOG generation). Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
This was referenced Sep 27, 2026
blocky-writer: sibling check-in — is there a seam between us?
hyperpolymath/dotmatrix-fileprinter#83
Open
hyperpolymath
approved these changes
Sep 27, 2026
hyperpolymath
approved these changes
Sep 27, 2026
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.
Two logically separate pieces of work on one branch, because this session is
pinned to a single branch. Part 1 finishes the tail end of #67. Part 2 is
a recon pass that found the repository's documentation describing a project it
is not, and fixes that. Part 2 is the larger half; Part 1 is two lines.
Part 1 —
fix(rust): clear the rust-core Clippy gateAt
main=e1b6225theRust core (tests, formatting, lint)job passedcargo fmtandcargo test(6/6) and failed at Clippy with exactly two lints, both inrust/pdftool_core/src/lib.rs.fn resolve_object(doc: &Document, obj: &Object) -> Result<Object, lopdf::Error> { match obj { - Object::Reference(id) => doc.get_object(*id).map(Clone::clone), + Object::Reference(id) => doc.get_object(*id).cloned(), _ => Ok(obj.clone()), } } fn object_to_number(obj: &Object) -> Option<f32> { match obj { Object::Integer(v) => Some(*v as f32), - Object::Real(v) => Some(*v as f32), + Object::Real(v) => Some(*v), _ => None, } }clippy::map_clone→.cloned(). lopdf 0.34'sDocument::get_object(&self, id) -> Result<&Object>1, andResult<&T, E>::cloned() -> Result<T, E> where T: Cloneis stable sinceRust 1.59.0 2.
ObjectderivesClone, so the declared return typeResult<Object, lopdf::Error>is unchanged.clippy::unnecessary_cast→Some(*v).Object::Real(f32)3, sovis
&f32and the cast was an identity cast.The adjacent
Object::Integer(v) => Some(*v as f32)is deliberately leftalone:
vis&i64there and thati64→f32cast is real. Clippy did notflag it.
Local verification
There is no Rust toolchain in this sandbox and no crates.io access, so
cargo fmt --check,cargo test --lockedandcargo clippywere not runhere.
cargoandrustcare absent,~/.cargoand~/.rustupdo not exist,and
static.rust-lang.org,sh.rustup.rs,crates.ioanddocs.rsare allnetwork-blocked (
SSL_ERROR_SYSCALL); onlygithub.com/api.github.comarereachable. The two edits were verified by reading the upstream source of the
exact pinned dependency:
lopdf0.34.0 (theCargo.lockversion):get_objectreturnsResult<&Object>, andObjectis#[derive(Clone, PartialEq)]withReal(f32)— fetched from thev0.34.0tag via the GitHub API.std:impl<T, E> Result<&T, E> { pub fn cloned(self) -> Result<T, E> where T: Clone },#[stable(feature = "result_cloned", since = "1.59.0")]— thedoc example is literally
Result<&i32, i32>::cloned() -> Result<i32, i32>.rust-clippymaster,clippy_lints/src/methods/map_clone.rs: for anon-
CopyTthe suggestion iscloned()(vscopied()forCopy), andthe diagnostic is
Applicability::MachineApplicable.Against run 36296845297 (push,
e1b6225, actorhyperpolymath), jobRust core (tests, formatting, lint), conclusionfailure, the step-levelresults were:
cargo fmt --manifest-path rust/pdftool_core/Cargo.toml -- --check)cargo test --manifest-path rust/pdftool_core/Cargo.toml --locked)cargo clippy --manifest-path rust/pdftool_core/Cargo.toml --locked --all-targets -- -D warnings)rust/pdftool_core/src/lib.rsis the crate's only.rsfile, andgrep -rn "map(Clone::clone)" rust/now returns nothing, so--all-targetshas no other file to fail on.
docs/ci/CHECK-DETERMINATIONS.adoc— therust-corerow said the job hadnever executed. It has: run 36296845297 reached its third step. The row now
records fmt+tests green, the two lints, and this repair, and stays open pending
one owner-triggered green run on
main. It is not marked plain "Fixed",because no such run exists yet.
Part 2 — recon: the docs were describing a different project
What was wrong
Six documents were materially out of date, in the way that makes a reviewer say
"oh, wait":
.github/CONTRIBUTING.mdhyperpolymath/language-bridges; documented alib/+extensions/+plugins/+tools/layout; told readers to runjust check,mix compile,guix develop; referenced an issue template that did not existJustfile,.adocdocs, one Rust crate and an AffineScript prototypeTOPOLOGY.adocdeno.jsondeleted by #43; the frontend is a prototype with no build pipelineEXPLAINME.adoclib/directorywww/.well-known/humans.txtREQUIRES_INITIALISATION.adocCODE_OF_CONDUCT.mdwere already resolveddocs/tech-debt-2026-05-26.adocCHANGELOG.adocexists;CONTRIBUTING.mdexisted and was wrongPlus three structural gaps: no issue templates at all, no PR template,
and no wiki (the wiki feature is enabled but
.wiki.githad never beeninitialised).
What changed
Corrected —
CONTRIBUTING.md(rewritten against this repo),TOPOLOGY.adoc(dashboard, missing "Last updated" date, and a rule-of-honesty note that a bar
describes working verified code rather than files on disk),
EXPLAINME.adoc(real dependency set plus a claims-and-where-they-are-checked table),
www/.well-known/humans.txtandai.txt(the latter pointed at anAI.a2mlthat does not exist),
TEST-NEEDS.adoc(14 workflows not 15, stale header),CHANGELOG.adoc(the[Unreleased]section was a mangled commit dump with aduplicated line and an inline
-Authored-By:trailer), and a newstatus-as-of-2026-09-27 section on the tech-debt snapshot so it cannot be
mistaken for current state.
Added —
docs/ecosystem/ECOSYSTEM.adoc, the suite boundary statement; anEcosystem position section in
README.adoc;.github/ISSUE_TEMPLATE/(
bug_report.yml,feature_request.yml,documentation.yml,config.ymlinthe estate's YAML form style);
.github/PULL_REQUEST_TEMPLATE.md; andwiki/plus the live wiki.Machine-readable state —
INTENT.contractile's eight outstanding tokensfilled from evidence, along with its empty
architectural-invariantsandask-before-touchingplaceholders;methodology.a2ml'sunique-strength,divergent-invariantsandknown-constraintsfilled;STATE.a2mlgivenverified/not-implemented/known-red-on-main/open-decisionssections (itscompletion-percentagehad read0since the2026-03-15 conversion);
debt.a2mlpopulated with the eleven things this reconfound and deliberately did not fix;
0-AI-MANIFEST.a2mlgiven a read-in-this-order list and a "three things that will surprise you" section.
Nothing was invented. Every token value is traceable to a file in this
repository or to docmatrix#71, and
REQUIRES_INITIALISATION.adoc— rewritten asa resolution record rather than deleted — says which is which.
The wiki
Seeded in BerryWiki format, the design taken from the metadatastician
estate: a hidden
<!-- berrywiki … -->metadata block carryingid,parent,position,kindandtags; hierarchy from theparentid chain rather thanfilenames; a generated
_Sidebar.md; plain Markdown that renders natively inGitHub's wiki reader with or without BerryWiki; zero JavaScript.
Eight pages: Home, Architecture, Rust-Core, CI-and-Gates, Ecosystem,
Contributing, Contributing--Dev-Setup, Glossary. Structure validated
programmatically — 8 pages, unique ids, every
parentresolves, siblingpositions distinct, no broken
[[WikiLinks]], every_Sidebarlink resolves.The source lives in
wiki/so it is versioned and reviewable; the publishedmirror has been pushed to
hyperpolymath/blocky-writer.wiki.git(commit59b17bd, replacing the placeholder "Welcome to the blocky-writer wiki!"page).
wiki/README.adocdocuments the format, the three rules that make itwork, the publish step, and how to add a page.
Owner actions
arena-ai-coding-agent[bot]in this org is refused at startup withActor is not allowed to trigger Actions workflows, so this PR will showno repository checks at all — not red, absent — because a startup failure
creates no check run. That is expected and is not a signal about this branch;
it is the same org-side policy recorded in
docs/ci/CHECK-DETERMINATIONS.adoc(<>) that stopped Fix CI and clarify project build status #71's runs.Nothing was weakened to work around it: no
continue-on-error, noif: false,no demotion.
main, add two required status checks to theBranch-Floorruleset (id 23869449, target~DEFAULT_BRANCH, currentlycarrying only
deletionandnon_fast_forward— verified via the API, ithas no
required_status_checksrule):actions.lock is in sync with the workflow YAMLRust core (tests, formatting, lint)Until step 2 lands, rule 2 of the standing rules in
docs/ci/CHECK-DETERMINATIONS.adoc("a red Lock Sync Gate is never mergedover") is a convention rather than an enforcement. Note the intended
interaction with the actor refusal: a required check that never runs blocks
every bot-authored PR from merging, which is the correct outcome — it turns
"CI-silent merge" into "cannot merge until an allowed actor triggers CI".
Optional, and cheap: update the repository description and topics to match
the boundary statement. The topics are currently
automation, cli-tool, developer-tools, epistemic-computing, epistemic-infrastructure, equivalence-aware-computing, hyperpolymath, open-source, rust, typed-provenance, veridical-computing— none of which saypdf, firefox-extension, wasm, affinescript or document-suite.
Cross-repo issues — filed
Eleven short issues, one per neighbour. Each says where blocky-writer is, what
they can now progress with, and what they might use from here. None proposes an
integration; that was deliberate — the ask was for parallel communication, not a
remarkable integration exercise.
docmatrixdocs/ecosystem/ECOSYSTEM.adoc. Asks them to confirm the wording and to decide whether the GitHub description also needs it.formatrix-docsdetect_blocksrectangle+label shape as a possible seam, and offers our.a2mlfiles as parser test material.affinescript.affinefiles, none compilable — no compiler config, no bundle pipeline. Asks for the smallest thing that makes them build.docudactyl/Tget a meaninglessfield_<page>_<index>. OCR is the obvious fix. Offers our widget rectangles in return.dotmatrix-fileprinterpresswerkuniversal-language-server-pluginrecon-silly-ationberrywikiberrywiki checkcould not be run here (no Rust toolchain), so our seed is validated by our own script, not theirs.gv-clade-indexCLADE.a2mlentry check. Phaseactiveis correct but may overstate the project; asks whether a "core works, product incomplete" bucket exists.rsr-template-repoCONTRIBUTING.mdtold readers to clonehyperpolymath/language-bridges. Plus the stale token count inREQUIRES_INITIALISATION.adoc.Not filed, deliberately:
standardsanddeed-ecosystem. The actor-refusalsignature is already recorded estate-wide (the determinations doc cites
wordpress-tools#96andstatistikles#112), so a third report would add noiserather than signal.
Follow-ups noted, not fixed
pages.yml(Ddraig SSG, Idris 2) andcasket-pages.yml(casket-ssg,Haskell) both build and deploy to
github-pages, so they cancel each other.pages.ymlalso looks forREADME.md, which does not exist here — it wouldpublish a bare
# hyperpolymath/blocky-writerindex.casket-pages.ymlhandles
README.adoccorrectly. Which one is canonical is undecided, and itis an owner call. Any fix needs the matching
actions.lockchange in thesame commit.
mainate1b6225, unrelated to this PR.Neither touches the Rust crate and neither has a row in the determinations
ledger, so both need one before anything is done about them:
Hypatia Security Scan(run 36296845360) — theHypatia Neurosymbolic Analysisjob fails atBuild Hypatia scanner (if needed)andUpload SARIF to GitHub code scanning.Mirror to Git Forges(run 36296845635) — 4 of 7 mirror jobs fail(
mirror-disroot,mirror-gitea,mirror-codeberg,mirror-bitbucket);mirror-gitlab,mirror-sourcehutandmirror-radicleare green, so thislooks like per-forge credential or host reachability rather than a workflow
defect.
a94b5b5, i.e. before this branch existed.deno.locksits in the root althoughrefactor: eradicate TypeScript and NPM/Deno configs #43 deleted
deno.json;webpack.config.cjsconfigures a bundle pipelinethat does not exist. Both are the most likely things to make a reviewer
think this is a Deno project. Deleting them is safe but it is an owner call —
an estate tool outside this checkout may reference them.
Justfilereads a file that does not exist. Thecrg-gradeandcrg-badgerecipes parseREADINESS.md; the CRG grade actually lives inTEST-NEEDS.adoc. Both silently fall back to gradeX.not implemented.
detect_blocksreports widget annotation rectangles only.This is the "hand spacing" case the project is named for — the real thing to
build next, and deliberately left alone here.
rust-corerow indocs/ci/CHECK-DETERMINATIONS.adocshould bere-marked Fixed once an owner-triggered green run on
mainexists.ubuntu-latestlabel migrates to Ubuntu 26 on 2026-10-19 (runner-imagesissue 14748), per the notice on run 36296845297.
Footnotes
lopdfv0.34.0,src/document.rs:pub fn get_object(&self, id: ObjectId) -> Result<&Object>. ↩rust-lang/rust,library/core/src/result.rs:impl<T, E> Result<&T, E>, stable since 1.59.0. ↩lopdfv0.34.0,src/object.rs:#[derive(Clone, PartialEq)] pub enum Object { ... Real(f32), ... }. ↩