2026-09-05  Péter Felecan  <pfelecan@gmail.com>

	Adapted to packpay's real evolution: bootstrap fixed, a retired script, real bugs found and fixed, and a root-cause investigation including a methodology error caught and corrected (2.2.0).

	MINOR bump, not major: real Makefile targets removed and real
	new board-config-aware behavior added, but no new required
	dependency (PACKPAY_DIR was already required since 2.0.0).

	Péter reported noisy ./bootstrap output and uploaded packpay's
	own real distribution archive (packpay-0.50.0.93, via
	automake's own `make dist`), directing: "we should adapt the
	current project to the evolutions made in packpay which is the
	reference now."

	* configure.ac (AM_INIT_AUTOMAKE): Added -Wno-portability.
	This project already requires GNU Make explicitly; the
	automake portability warning about a GNU-make-only
	Makefile.am construct was about an already-deliberate choice,
	not a real bug. ./bootstrap now shows zero warnings.
	* build_pixel3a_breadboard.py: Removed (retired). packpay's
	own evolution removed usb_c()/trimmer_straddle()/mosfet() from
	breadboard_lib.py as unused dead code -- confirmed via
	packpay's own ResearchJournal.org that this was a correct call
	from packpay's own perspective (no real caller in packpay
	itself), without visibility into this project's continued use.
	This tool's own reference purpose (validating the 2026-08-10
	breadboard promotion) was already served; reimplementing three
	circuit-specific SVG primitives to keep it alive wasn't
	worthwhile. Makefile.am's own breadboard-handplaced-regen/
	breadboard-handplaced-verify targets, EXTRA_DIST entry,
	.tar-exclude entries, and make-archive's own script list all
	updated accordingly.
	* build_pixel3a_breadboard_autolayout.py: Fixed a real, latent
	bug -- render() was called unconditionally regardless of the
	connectivity/bounds checks just above it, the same bug class
	already fixed once in packpay's own render.py demo. Now skips
	render() and exits cleanly when a check already failed.
	Updated to load and pass packpay's own real board_config
	(breadboard1.conf, Péter's own physical 3-sector board) instead
	of relying on an unspecified default. Added a real,
	non-invasive override of auto_layout._CATEGORY_FOOTPRINT's own
	"resistor"/"diode" entries (from this project's own calling
	code, no packpay source file touched) to a real, standard
	vertical-mount KiCad footprint variant instead of the default
	horizontal, flat-mount one -- the real root cause of this
	circuit's own board-bounds violations under packpay's new,
	accurate (measured) board geometry: real_size_rows() was
	applying a THT part's own FACTORY horizontal lead spacing
	directly as vertical breadboard row span, when the same real
	component is routinely mounted standing up with bent leads
	when board space is tight. Combined with rail_threshold=2
	(re-verified against accurate data), reaches a genuinely clean
	result while keeping the same five real anchors this circuit
	has always used.
	* A real methodology error made and corrected during this
	session, recorded honestly rather than silently fixed: an
	intermediate conclusion (rail_threshold=2 alone was sufficient)
	was reached via manual tests that inconsistently omitted
	KICAD_FOOTPRINT_DIR, silently substituting inaccurate fallback
	component sizing. Found via extensive debugging (ruled out
	hash-seed randomization, stale bytecode cache, environment-
	variable passage, netlist content differences) before finding
	the real cause and redoing the investigation with accurate,
	consistent data throughout.
	* All changes verified: the complete `make breadboard-verify`
	command run 5 times in direct succession from a clean slate,
	0 failures every time; the complete Makefile target sequence
	(kicad-erc, kicad-handplaced-erc, netlist-verify,
	breadboard-verify, auto-layout-demo) run end to end against
	the real, uploaded packpay archive, all clean; the final
	result rendered and visually inspected, not just trusted from
	the automated checks.
	* ResearchJournal.org: New entry with the complete, honest
	account, including the methodology error.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 2.2.0.

2026-09-05  Péter Felecan  <pfelecan@gmail.com>

	Documentation audit: user documentation cleaned of narrative/dates, FutureResearch.org holds only genuinely open items, two real factual inconsistencies found and fixed (2.1.1).

	PATCH bump, not minor: documentation cleanup and correction,
	no new code behavior.

	Raised directly: why keep already-done items in
	FutureResearch.org when their place is ResearchJournal.org?
	Agreed with this principle explicitly -- it was already this
	document's own stated Maintenance Rule, not consistently
	followed. Corrected going forward, not just this once: the
	rule itself was strengthened to state the past/future split
	explicitly.

	* FutureResearch.org: Rewritten. Removed the stale "Tooling
	Completeness Assessment" section (a dated snapshot, not future
	work -- its two genuinely open items extracted into proper
	TODOs first); removed one fully-completed TODO item (real BOM
	footprints -- verified its content already lived in
	ResearchJournal.org before deleting); removed a redundant
	"tombstone" note pointing at content already safely
	documented elsewhere; stripped heavy dated/completed narrative
	that had accumulated inside several still-partially-open items
	(sensor corrections, Provisioning verification, second-device
	acquisition, battery-free power) down to concise statements of
	what's actually still open. Document went from 332 lines to
	about 130. One new, previously untracked gap added, found
	during the audit: dudhya-wifi-mode was never wired into
	OpenRC's own boot sequence.
	* Concept.org: Rewritten. New "How the project's artifacts
	attain this goal" section walking through each real
	deliverable (Dudhya.org's procedures, the provisioning
	scripts, WiFi mode-switching, sensor telemetry, the
	battery-free power circuit via packpay) and how it serves the
	stated goal.
	* Dudhya.org: Audited and cleaned -- all 26 narrative
	references to the author and all 46 narrative dates removed
	(only the required $Id: ChangeLog 125 2026-09-08 07:49:45Z peter $ version stamp remains). Condensed a
	~235-line development-history narrative (the KiCad tool's own
	debugging journey) down to 64 lines of clean current-state
	fact. Found and fixed two genuine, pre-existing factual
	inconsistencies the audit surfaced, not just style issues: one
	section claimed dudhya-sensord was "not yet run on the
	physical unit" while a later section already confirmed it
	was; another claimed the Provisioning scripts' radio mode was
	"not yet exercised at all," when ResearchJournal.org shows it
	was actually run and found to stall under sustained load. Both
	corrected to match the real ground truth.
	* README: Two narrative dates removed.
	* DevelopmentStandard.org: New "Audience" statement in the
	Introduction, formally documenting the user-doc vs. dev-doc
	boundary (Concept.org/Dudhya.org/README/Index.org for users;
	this document, ResearchJournal.org, and FutureResearch.org for
	development) as a written rule.
	* Index.org: Already clean, no changes needed.
	* All changes verified: full rebuild (bootstrap/configure/make
	pdf/make html) clean for all six documents; the complete
	KiCad/breadboard Makefile target sequence (seven targets)
	re-run clean; Concept.pdf visually confirmed rendering
	correctly.
	* VERSION, NEWS: 2.1.1.

2026-09-01  Péter Felecan  <pfelecan@gmail.com>

	Filesystem flattened: no more subdirectories, and a new rule on creating one (2.1.0).

	MINOR bump, not major: the public Makefile interface (target
	names, PACKPAY_DIR) is unchanged; only internal file layout
	moved.

	* DevelopmentStandard.org (File Naming): New "Flat filesystem
	structure, and a rule on creating a new subdirectory"
	subsection -- recorded here, not in Constitution.org (Péter's
	own direct-edit document). Binding rule: any future
	subdirectory requires asking first and stating the reason,
	explicit approval before creating it.
	* OpenRC/dudhya-sensord, Power/auto-layout/*.py,
	Power/breadboard-gen/*.py, Power/kicad-gen/*.py,
	Power/netlist/*.py, Provisioning/*, Src/dudhya-sensord.c,
	WiFi/*: Moved. All thirteen real files from eight
	subdirectories now live at the project root; every
	subdirectory removed.
	* dudhya-sensord -> dudhya-sensord.openrc: Renamed. A real,
	previously-hidden naming collision the flattening exposed:
	bin_PROGRAMS builds a compiled binary named dudhya-sensord,
	which would collide with the OpenRC init script of the same
	name once both lived at the root (safe only while they lived
	in separate directories). Checked project history first (a
	2026-07-31 entry already documented this exact naming
	coincidence as deliberate -- OpenRC's own convention names a
	service script after the service). Resolved by renaming the
	SOURCE TREE's own copy; the DEPLOYED name
	(/etc/init.d/dudhya-sensord) is unchanged.
	* build_pixel3a_power.py, build_pixel3a_power_autolayout.py,
	build_pixel3a_breadboard_autolayout.py,
	build_pixel3a_breadboard.py, test_netlist.py: Fixed -- every
	internal relative path assuming the old subdirectory layout
	removed. Re-verified end to end against a fully rebuilt
	environment (the sandbox had reset completely since the
	previous session).
	* Makefile.am: Rewritten -- every `cd Power/...` prefix
	removed entirely (no longer needed), every Power/-prefixed
	variable and literal path flattened. EXTRA_DIST updated to
	flat filenames.
	* configure.ac: Two stale comment fixes (Src/dudhya-sensord.c
	-> dudhya-sensord.c) -- never hardcoded a subdirectory path
	for anything real.
	* .tar-exclude: Rewritten -- the "stray file in a different
	working directory" complication it used to document (two
	entries, one per directory, because two different generators
	ran from two different subdirectories) no longer applies with
	only one directory; collapsed to one entry each, history kept
	in the comments. Found and fixed two real duplicate patterns
	(__pycache__, .deps) introduced by this session's own first-
	pass edit, caught before packaging.
	* make-archive: scripts_to_check list updated to flat
	filenames.
	* DevelopmentStandard.org, Dudhya.org, FutureResearch.org,
	README: Updated -- every real subdirectory path reference
	fixed, confirmed via a comprehensive final scan.
	ResearchJournal.org's own historical entries and
	SessionHandoff.org's own older session entries deliberately
	left untouched.
	* All changes verified: full rebuild from a freshly
	reconfigured tree (autotools, emacs, and TeX packages all
	reinstalled after the sandbox reset -- a real, unrelated
	ulem.sty gap recurred and was fixed the same documented way);
	the complete KiCad/breadboard Makefile target sequence (seven
	targets) re-run clean through the actual make interface; make
	pdf/make html clean for all six documents.
	* ResearchJournal.org: New entry with the full account.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 2.1.0.

2026-08-17  Péter Felecan  <pfelecan@gmail.com>

	KicadGen.org excised to packpay too: the last piece of the generic engine's own documentation left behind (2.0.1).

	PATCH bump, not minor: corrects a completeness gap in the
	2026-08-14 extraction (which moved every generic MODULE but
	missed this one DOCUMENT), adds no new behavior.

	* KicadGen.org: Removed. Evaluated its own content first
	(doubly stale: written before the KiCad-side promotion of
	1.53.0 and before the packpay extraction of 2.0.0 changed the
	file paths and Makefile targets it named). Genuinely dudhya-
	specific content (the "full workflow" section's own concrete
	description of this project's own real pipeline) dispatched
	to DevelopmentStandard.org, corrected against current reality,
	not carried forward stale. A fully adapted, standalone version
	for packpay produced and verified independently (PDF and HTML
	export both confirmed clean) but not delivered inside this
	archive -- Péter's own explicit instruction was to deliver just
	the org file for him to integrate into packpay himself.
	* DevelopmentStandard.org (Depending on packpay): New "This
	project's own real workflow, current as of 2.0.1" subsection.
	* Makefile.am (ORG_DOCS): KicadGen.org removed.
	* README, Index.org: Updated -- both mentions and the dead
	link to the now-unpublished document removed.
	* ResearchJournal.org: New entry with the full account.
	* SessionHandoff.org: Updated -- also found and fixed a real
	gap along the way: the 2.0.0 packpay extraction itself was
	never logged here at all (a previous session's own budget ran
	out first); added retroactively for continuity.
	* All changes verified: full rebuild (bootstrap/configure/
	make pdf/make html) clean, no broken links; the complete
	KiCad/breadboard Makefile target sequence re-run to confirm
	this documentation-only change didn't disturb anything real.
	* VERSION, NEWS: 2.0.1.

2026-08-14  Péter Felecan  <pfelecan@gmail.com>

	Surgical extraction: the generic auto-layout/schematic engine moved to its own project, packpay (2.0.0).

	MAJOR version bump, not minor: this is a genuine breaking
	change to the build contract. Before this change,
	`make kicad-regen` (and every real KiCad/breadboard target)
	worked from a self-contained checkout. After this change, they
	require a real, separate packpay checkout, located via a new
	PACKPAY_DIR environment variable, or they fail immediately.

	Assessed directly, before doing any work, whether the
	extraction itself was premature: not found premature (the
	generic engine had, by this point, been tested against three
	genuinely different circuits with real, automated verification
	at every step). Full reasoning in packpay's own
	FutureResearch.org, under the name Péter requested ("surgical
	extraction/migration").

	* Power/kicad-gen/kicad_gen.py, Power/netlist/netlist.py,
	Power/breadboard-gen/breadboard_lib.py,
	Power/auto-layout/auto_layout.py,
	Power/auto-layout/kicad_layout.py,
	Power/auto-layout/footprint.py,
	Power/auto-layout/render.py,
	Power/auto-layout/render_footprints.py,
	Power/auto-layout/visualize.py,
	Power/auto-layout/build_test_circuit_autolayout.py,
	Power/auto-layout/build_test_circuit2_autolayout.py,
	Power/label-reach-measure/*: Removed. All moved to packpay
	(renamed there: build_test_circuit_autolayout.py ->
	example_circuit1.py, build_test_circuit2_autolayout.py ->
	example_circuit2.py).
	* Power/kicad-gen/build_pixel3a_power.py,
	Power/auto-layout/build_pixel3a_power_autolayout.py,
	Power/auto-layout/build_pixel3a_breadboard_autolayout.py,
	Power/breadboard-gen/build_pixel3a_breadboard.py,
	Power/netlist/test_netlist.py: Updated -- each now requires
	PACKPAY_DIR (an environment variable pointing at a real
	packpay checkout) instead of a local sys.path.insert() into a
	now-nonexistent subdirectory, matching the KICAD_SYM_DIR/
	KICAD_FOOTPRINT_DIR pattern. Each tested twice: once against
	packpay while the old local files still existed, and again
	after they were actually deleted, confirming genuine
	independence rather than an accidental fallback.
	* Makefile.am: kicad-test-circuit/kicad-test-circuit2 removed
	(now packpay's own `make check`). auto-layout-demo repointed
	at packpay's own render.py via PACKPAY_DIR while still
	rendering this project's own real circuit. New PACKPAY_DIR
	variable (`?= @PACKPAY_DIR@`, settable at configure or make
	time, matching KICAD_CLI), threaded through every real recipe
	that needs it. EXTRA_DIST updated: eight moved files removed,
	two previously-missing real files added (a genuine, unrelated
	`make dist` gap found while touching this exact list).
	* configure.ac: New PACKPAY_DIR check, matching the existing
	kicad-cli/kicad-symbols pattern -- warns if unset, separately
	confirms a real packpay checkout if set.
	* .tar-exclude, make-archive: Updated for the files that moved.
	* README: Rewritten -- was stale since 1.0.0 ("no compiled
	program yet" at 1.53.0); now accurately describes this
	project's own real deliverables and the new packpay dependency.
	* DevelopmentStandard.org: Electronics section trimmed from
	~1300 lines to ~150 -- kept "Obtaining and running KiCad" (still
	genuinely needed here) and added "Depending on packpay"; the
	rest (now duplicated, word for word, in packpay's own copy)
	replaced with a pointer.
	* FutureResearch.org: Tooling Completeness Assessment rewritten
	for what's actually still dudhya's own to assess. ~800 lines of
	now-superseded engine-development tracking (Fritzing research,
	shared netlist source, automatic layout algorithm, the
	generalization plan and its own closed gaps) removed with a
	clear pointer to packpay's own copy, per this document's own
	"remove items when completed and documented" rule.
	* ResearchJournal.org: New entry with the full account of the
	extraction from dudhya's own side.
	* batch-init.el: Fixed a small, unrelated bug found during
	packpay's own creation (a corrupted word, "idudhyately",
	almost certainly from an earlier project rename) -- now fixed
	in both projects' own copies.
	* All changes verified: real circuit 0 ERC errors, netlist
	equivalence intact, all four breadboard checks clean, the
	complete Makefile target sequence (kicad-erc,
	kicad-handplaced-erc, netlist-verify, breadboard-verify,
	breadboard-handplaced-verify, auto-layout-demo) re-run end to
	end through the actual Makefile with PACKPAY_DIR threaded
	correctly.
	* VERSION, NEWS: 2.0.0.

	own preamble, so a literal underscore in an identifier renders
	correctly instead of being read as a subscript marker.

	* Index.org, Concept.org, FutureResearch.org,
	DevelopmentStandard.org, ResearchJournal.org, Dudhya.org,
	KicadGen.org: #+OPTIONS: ^:{} added/updated in every preamble.
	Verified directly in both PDF (LaTeX) and HTML output, not
	just assumed fixed.
	* Power/auto-layout/auto_layout.py (_CATEGORY_FOOTPRINT,
	_ANCHOR_ADAPTER_WIDTH_MM, real_size_rows): Real footprint/
	adapter data for J1 (SparkFun USB-C Breakout, confirmed
	22.1x14mm), U2 (XL4015 module, cross-confirmed ~54x24mm), and
	Q1 (real KiCad TO-220-3 courtyard via a documented IRF9540
	substitute, matching the circuit's own "or equiv. P-MOS"
	value string). U1 deliberately left unmapped -- no confirmed
	standardized product found. Also fixed a real, previously-
	latent bug found while testing this: every one of these four
	anchors' own real value strings matched no category and
	silently fell through to a nonsensical "resistor" default,
	masked only because pin count already dominated; added a
	"mosfet" category and an assume_resistor_default parameter so
	an unmatched anchor falls back to its own pin count instead.
	* Power/kicad-gen/kicad_gen.py (place): New optional footprint
	parameter, emitting KiCad's own standard hidden Footprint
	property.
	* Power/kicad-gen/build_pixel3a_power.py (FOOTPRINTS): New.
	Real, confirmed BOM footprints for all 16 real components,
	each backed by real research or direct measurement. Verified
	every footprint string resolves to a real file.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: The
	KiCad auto-layout candidate PROMOTED to this project's own
	primary generator. Reads from a renamed "-handplaced" schematic
	(the deliberate, human-authored source), not from its own
	prior output, avoiding a self-referential loop.
	* Makefile.am (kicad-regen, kicad-handplaced-regen,
	kicad-handplaced-erc): New/renamed targets implementing the
	promotion, following the breadboard side's own 2026-08-10
	pattern. Six real dependents individually re-pointed at
	whichever schematic is actually correct for their own purpose,
	confirmed by a full dependency audit performed first.
	* Power/breadboard-gen/build_pixel3a_breadboard.py,
	Power/auto-layout/build_pixel3a_breadboard_autolayout.py:
	Fixed two more stale hardcoded netlist-source paths found
	while auditing the promotion, not caught by the Makefile audit
	alone.
	* .tar-exclude: New entries for "-handplaced" outputs; fixed a
	real, pre-existing packaging gap (breadboard-handplaced.svg
	was never excluded) found along the way.
	* Power/auto-layout/auto_layout.py (layout): New optional
	pin_geometry parameter -- real symbol (dx, dy) pin offsets now
	drive each anchor's own north/south grouping, replacing a
	purely positional first-half/second-half split, with a
	documented fallback for missing data.
	* Power/auto-layout/build_pixel3a_breadboard_autolayout.py:
	Builds and supplies the real pin_geometry table, reusing
	build_pixel3a_power.py's own PINS dict.
	* Power/auto-layout/build_test_circuit2_autolayout.py: New. A
	third, differently-shaped synthetic test circuit (flat, no
	passive-to-passive chains, comfortable PWR_FLAG headroom --
	the opposite shape from the first one). Found a real,
	previously-undiscovered bug: a net that's both a 2-member
	direct-wire candidate and needs a PWR_FLAG left the flag's own
	label isolated, with nothing on the net's own real name for it
	to join.
	* Power/auto-layout/kicad_layout.py: Fixed the bug above --
	skip the direct-wire shortcut specifically when a net also
	needs a PWR_FLAG, falling through to normal labeling instead.
	Re-verified the real circuit and the first test circuit are
	unaffected.
	* Makefile.am (kicad-test-circuit2): New target.
	* All changes verified: real circuit 0 ERC errors throughout,
	netlist-equivalent, visually unchanged; both synthetic test
	circuits 0 ERC errors with every check passing; breadboard
	side's full four-check verification re-run clean after every
	change touching that pipeline; the complete target sequence
	(eleven targets) run from a clean slate after the promotion.
	* SessionHandoff.org: Fixed a real duplication bug (two
	differently-dated sessions both mislabeled "most recent") and
	rewrote Current State/Next Steps to reflect all five items.
	* ResearchJournal.org: New entry with the full account of
	every item, including the bug investigations and fixes.
	* DevelopmentStandard.org: New lessons -- two independently-
	correct features can still combine into a real bug; a
	structural promotion needs its own dependency audit.
	* FutureResearch.org: Updated -- both items marked DONE with
	details; completeness assessment updated to reflect promotion.
	* Dudhya.org: Updated -- stale "actual source now" description
	corrected to describe the promoted generator.
	* VERSION, NEWS: 1.53.0.

2026-08-13  Péter Felecan  <pfelecan@gmail.com>

	Both remaining generalization gaps closed; a real, previously-unknown footprint-parser bug found and fixed along the way; RV1's own anchor sizing finally wired up (1.52.0).

	Gap 1 (manual parameter tuning) and Gap 2 (component-text
	avoidance), both named in 1.51.0's own FutureResearch.org
	entry, closed the same day in a later session. A real,
	previously-unknown bug in footprint.py was found and fixed
	while pursuing the second one.

	* Power/auto-layout/kicad_layout.py (UnplaceableError): New.
	Distinct exception type for a genuine topology problem (an
	unreachable passive) vs. a spacing/bounds problem -- never
	retried by the new automatic driver below.
	* Power/auto-layout/kicad_layout.py (generate_schematic_auto):
	New. Closes Gap 1: a bounded, ordered retry ladder (paper size
	x north_anchor_extra), starting at the shared module's own
	tuned defaults and escalating only on a genuine
	bounds/overlap failure. Verified by removing every hand-picked
	override from the Step 3 test circuit and confirming it still
	finds its own way to a clean placement.
	* Power/auto-layout/build_pixel3a_power_autolayout.py,
	Power/auto-layout/build_test_circuit_autolayout.py: Both
	switched to generate_schematic_auto(); real circuit succeeds
	at the exact original defaults, zero retries.
	* Power/auto-layout/footprint.py: Fixed -- courtyard parsing
	never handled the fp_rect node type, only fp_circle/fp_line.
	Confirmed a real, previously-uncaught bug: FOUR of this
	project's own six real, mapped category footprints use
	fp_rect and were silently returning courtyard_bbox=None,
	falling back to a heuristic despite being documented as using
	real geometry. Only found once KiCad's own footprint libraries
	were actually installed in this environment for the first
	time (previously only symbols had been extracted).
	* Power/auto-layout/auto_layout.py (layout): Fixed -- anchors
	now consult real_size_rows() too (previously passives-only),
	giving RV1 (a real anchor with an already-mapped real THT
	trimmer footprint) genuine physical clearance from its own
	real body, not just pin count. Closes RV1's own piece of the
	2026-08-06 anchor-sizing item; U1/U2/J1/Q1 remain open.
	* Power/kicad-gen/kicad_gen.py (value_text_reach): New.
	Closes Gap 2: a component's own real rendered Value text
	width, measured the same direct-SVG-measurement way as
	label_reach() (five real strings, 2-64 characters, fit
	width_mm = 1.244 + 0.958 * len(value), max residual 0.72mm).
	* Power/label-reach-measure/measure_value_text.py: New. The
	one-off measurement script that produced value_text_reach()'s
	own formula.
	* Power/auto-layout/kicad_layout.py (avoid_label_reach): Fixed
	-- replaced the flat, unmeasured 15mm component_clearance
	constant with value_text_reach(); added a candidate_reach
	parameter and switched every check to genuine interval-vs-
	interval comparison (the candidate's own full occupied span,
	not just its anchor point) after the first integration
	attempt still left the previous session's own documented
	residual overlap in place. Confirmed genuinely resolved by
	direct SVG comparison.
	* All changes verified: real circuit 0 ERC errors, netlist
	equivalence intact, visually unchanged from the delivered
	1.51.0 output; test circuit 0 ERC errors, all bounds/overlap
	checks passing, the known residual overlap confirmed gone;
	breadboard side's full four-check verification re-run clean
	after both the footprint.py fix and the RV1 wiring.
	* FutureResearch.org: New dated tooling-completeness
	assessment section (per-tool: mature / verified candidate
	pending promotion / genuinely open); both closed gaps and
	RV1's own piece of anchor-sizing marked DONE with details.
	* KicadGen.org: New section describing the full workflow --
	schematic -> real netlist -> two independent, netlist-driven
	generators (breadboard, promoted; KiCad auto-layout,
	candidate) -- and precisely where and how this closes into a
	genuine loop.
	* ResearchJournal.org: New entry with the full account of
	every fix, including both PWR_FLAG-avoidance integration
	attempts and the footprint.py bug's own discovery.
	* DevelopmentStandard.org: New lessons -- bounded retries as
	an alternative to a smarter upfront formula; "confirmed" is a
	claim about the specific files tested, not the format in
	general; a silently-succeeding fallback path is exactly the
	shape of bug that survives longest undetected.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.52.0.

2026-08-13  Péter Felecan  <pfelecan@gmail.com>

	Generalization and Step 3 tackled together: kicad_layout.py extracted, tested against a genuinely different circuit, four real bugs found and fixed (1.51.0).

	Both remaining items from the three-item plan named 2026-08-10
	tackled together, since testing against a different circuit
	was impossible while the algorithm still lived entirely
	inside one circuit's own script.

	* Power/auto-layout/kicad_layout.py: New. The whole KiCad
	placement algorithm, extracted from
	build_pixel3a_power_autolayout.py -- anchor row, passive
	attachment, PWR_FLAG placement, label emission, verification.
	Confirmed a PURE extraction (byte-identical output, random
	UUIDs normalized) before anything else was built on it.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Reduced
	to a genuinely thin, circuit-specific caller of
	kicad_layout.py's own generate_schematic().
	* Power/auto-layout/build_pixel3a_power_autolayout.py: PWR_FLAG
	gap positions now computed from real anchor coordinates, not a
	hardcoded literal list.
	* Power/auto-layout/kicad_layout.py (PAPER_SIZES,
	title_block_rect): New. Sheet/title-block geometry now derived
	from paper size -- confirmed empirically (not assumed) that
	KiCad's own title block is fixed-size/fixed-margin,
	independent of paper size, by generating and measuring a
	second test schematic at A3.
	* Power/netlist/netlist.py (pin_types,
	nets_needing_pwr_flag): New, additive. PWR_FLAG-needing nets
	now derived from real pin electrical types (KiCad's own
	`pintype` field) instead of a hand-picked net-name list.
	Confirmed the actual ERC rule (power_in present, power_out
	absent) against five real nets before relying on it; existing
	test_netlist.py suite re-confirmed passing.
	* Power/auto-layout/build_test_circuit_autolayout.py: New. A
	synthetic, structurally different circuit (fewer anchors than
	PWR_FLAG nets needed, a three-level passive chain, 1-68
	character net names) run through kicad_layout.py's own generic
	algorithm -- Step 3 of the generalization plan, substantially
	done rather than left untouched.
	* Power/auto-layout/kicad_layout.py: Fixed -- a chain-depth
	mechanism (north_anchor_extra) only ever applied at a chain's
	first hop, silently insufficient beyond two levels. First fix
	attempt broke the real circuit (a symmetric chain_starters set
	wrongly flagged a chain's own leaf); replaced with a
	placement-order-aware has_pending_child() check, real circuit
	re-verified unaffected.
	* Power/auto-layout/kicad_layout.py: New verification --
	component-vs-component body overlap, previously undetected by
	any check (a component whose only connection becomes a direct
	wire has no label for the existing checks to examine).
	* Power/auto-layout/kicad_layout.py (avoid_label_reach): New
	component_centers parameter -- PWR_FLAG labels now also
	avoid landing on a different component's own Value property
	text, and on other already-placed flags. Uses a documented,
	not-yet-empirically-measured flat clearance constant; a
	real residual overlap knowingly left in place after larger
	constants were shown to relocate the problem onto a different
	component instead of fixing it.
	* Makefile.am (kicad-test-circuit): New target, kept runnable
	every time kicad_layout.py itself changes.
	* .tar-exclude: New entries for the test circuit's own
	generated output, matching the same established pattern used
	for every other generator's own output.
	* All changes verified: real circuit 0 ERC errors, 25/25 nets
	identical, byte-identical to the delivered 1.50.0 output; test
	circuit 0 ERC errors, all bounds checks passing; breadboard
	side and the formal netlist-verify suite re-confirmed clean.
	* ResearchJournal.org: New entry with the full account,
	including all four bugs and how each was found and fixed.
	* DevelopmentStandard.org: New subsection on the architectural
	split and the generalized lessons from each bug.
	* FutureResearch.org: Updated, with a new, precisely-scoped
	TODO for the two gaps still open (parameter selection still
	manual; component-text avoidance still a flat constant).
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.51.0.

2026-08-12  Péter Felecan  <pfelecan@gmail.com>

	The three diagnosed overlaps fixed and verified clean; two real regressions caught along the way, not glossed over (1.50.0).

	The missing mechanism behind all three overlaps was that
	nothing measured a global_label's own real rendered reach.
	Fixed by direct SVG measurement, the same discipline used for
	the original direction/justify rule.

	* Power/kicad-gen/kicad_gen.py (label_reach): New. Empirically
	measured (seven real net names, all four directions, direct
	SVG measurement -- kicad-cli's own hidden, exactly-measured
	<text> element, not the stroke paths): reach_mm = 6.878 +
	1.150 * len(net_name), max residual 0.28mm.
	* Power/label-reach-measure/measure_labels.py: New. The one-off
	measurement script that produced label_reach()'s own formula,
	kept for re-measurement if label()'s own stub/font size ever
	changes.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Fixed
	C4/D2 -- passive-to-passive vertical offset now clears the
	attaching passive's own label reach, not just its body.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Fixed
	#FLG3/D1 -- PWR_FLAG placement moved to run after real label
	emission; new _avoid_label_reach() nudges a candidate position
	clear of any real label it would otherwise land inside.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Fixed
	L1's own sheet-edge overflow. New, permanent, automatic check
	(labels vs. sheet bounds) -- this class of bug had previously
	only ever been caught by manual visual review.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: New
	automatic check (components vs. the title block), added after
	the first fix attempt (raising ANCHOR_Y) silently pushed D2
	into the title block -- caught by direct SVG crop, not by any
	check that existed at the time.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: New
	chain_starters (derived from the netlist, before placement)
	replaces an earlier, broader NORTH_ANCHOR_EXTRA application that
	was itself caught introducing a second regression (an unrelated
	component's own label moved into a new collision on a different
	anchor) by direct comparison against the pristine generator's
	own output.
	* All changes verified together: 0 ERC errors (warning profile,
	not just count, confirmed identical to the working generator),
	25/25 nets identical, full-sheet visual sweep, breadboard side
	(shares kicad_gen.py) re-confirmed clean.
	* ResearchJournal.org: New entry with the full account, including
	both regressions and how each was caught.
	* DevelopmentStandard.org: New "Electronics" subsection --
	label_reach()'s own method/formula, and the lesson that a fix
	making a new check pass isn't the same as a fix that doesn't
	break anything else.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* .tar-exclude: New entries for the autolayout candidate's own
	generated KiCad files and label-reach-measure's own generated
	by-products -- a genuine packaging gap found while cutting this
	delivery (the candidate's own output wasn't excluded the way
	the primary schematic's is, so a session that had run
	kicad-autolayout would have shipped a stale generated file).
	Also excludes a stray Power/auto-layout/*.kicad_pro left by
	kicad-cli's own netlist loading -- confirmed pre-existing (was
	already leaking into the 1.49.1 archive too), caught this
	session by direct inspection of a pristine extraction, not
	introduced by anything above.
	* VERSION, NEWS: 1.50.0.

2026-08-12  Péter Felecan  <pfelecan@gmail.com>

	Documentation-only release: diagnostic findings and generalizability analysis saved ahead of a forced session boundary (1.49.1).

	No code changed in this release. Péter's own infrastructure
	signaled the conversation could not continue; this release
	preserves the session's own diagnostic work rather than losing
	it, per Péter's own explicit instruction.

	* ResearchJournal.org: New entry with three newly-diagnosed
	(not yet fixed) overlaps -- #FLG3/D1, L1's own north-edge
	overflow, C4/D2 -- each traced to a precise, confirmed root
	cause. New entry with a direct, honest answer to Péter's own
	question of whether this work's placement fixes are generic
	rules or hand-tuned constants: mostly the latter so far: only
	the passive-to-passive offset fix and the direct-wire mechanism
	are genuinely generic; PWR_FLAG's own hard-coded positions and
	several spacing constants are tuned to this one circuit and
	would likely need rework against a different one.
	* FutureResearch.org: Same findings recorded against the
	relevant open item.
	* SessionHandoff.org: Substantially condensed (771 -> 502
	lines) -- the long chain of individual session paragraphs
	compressed into current-state-focused summaries, full narrative
	detail left in ResearchJournal.org where it belongs. Added an
	explicit, prominent environment-setup pointer for a fresh
	session (DevelopmentStandard.org's own KiCad section), and the
	three new overlaps plus the generalizability gap added as the
	top Next Steps items.
	* VERSION, NEWS: 1.49.1.

2026-08-12  Péter Felecan  <pfelecan@gmail.com>

	Four specific overlaps found and fixed, all verified safe -- the clutter issue finally makes progress without a new bug (1.49.0).

	* Power/auto-layout/build_pixel3a_power_autolayout.py: PWR_FLAG
	placement now uses fixed, dedicated X positions in the gaps
	between anchors, instead of being tied to an arbitrary net
	member (often an already-crowded passive). Fixes #FLG1/U1 and
	#FLG3/D1 crowding.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Fixed a
	real bug -- a passive attaching to another passive (not an
	anchor) was landing at that passive's own exact coordinates
	(confirmed: D2 and C4 identical). Now offsets from the real
	attachment point's own position.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: Vertical
	spacing between passives stacked on one anchor's own side
	increased 12.7mm -> 20mm, giving real margin for a label's own
	actual reach.
	* All four changes verified individually: 0 ERC errors, exact
	15-net equivalence to the original schematic, after each one.
	* ResearchJournal.org: New entry with the full account.
	* DevelopmentStandard.org: New lesson -- after a general search
	mechanism causes real bugs, investigating each specific symptom
	individually can be the safer next step, not a more careful
	version of the same mechanism.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.49.0.

2026-08-11  Péter Felecan  <pfelecan@gmail.com>

	Left-edge overflow fixed; real wires for short connections added, both verified safe (1.48.0).

	* Power/auto-layout/build_pixel3a_power_autolayout.py: Anchor
	row starting margin widened 20mm -> 45mm, fixing a distinct
	left-edge overflow (root cause: passive placement derives its
	own X from an arbitrary anchor pin, which for U1 sits on its
	own left edge). Verified: 0 ERC errors, exact 15-net
	equivalence.
	* Power/auto-layout/build_pixel3a_power_autolayout.py: New --
	direct wires drawn for 2-member nets connecting a passive to
	its own attachment anchor, with a checked 50mm distance cap,
	instead of two separate labels. Deliberately narrow and
	bounded (no search loop), learning directly from this same
	day's own earlier reverted collision-avoidance bug. Verified:
	0 ERC errors, exact netlist equivalence.
	* ResearchJournal.org: New entry with the full account,
	including the researched (not guessed) answer to the label-
	direction convention question, and a near-miss (an old backup
	briefly, accidentally restored over current work) caught and
	recovered before anything was lost.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.48.0.

2026-08-11  Péter Felecan  <pfelecan@gmail.com>

	KiCad-side candidate: title and out-of-bounds fixed and verified; a critical bug found and reverted before delivery (1.47.0).

	* Power/auto-layout/build_pixel3a_power_autolayout.py: Title
	matched to the existing generator's own working title. Anchor
	spacing reduced 65mm -> 48mm, fixing out-of-bounds elements
	(root cause: RV1's own long value text exceeding the page at
	the original spacing). Both changes verified individually (0
	ERC errors, exact 15-net equivalence to the original schematic).
	* DevelopmentStandard.org: New lesson on giving any search loop
	that adjusts a real, physical quantity (wire length) a hard
	upper bound from the start -- a collision-avoidance system
	built this round let stub lengths grow to 282mm in one crowded
	spot, merging seven real nets together; caught by the project's
	own netlist-equivalence check before delivery, reverted. A
	second, related fix (avoiding a known-broken label direction)
	was also reverted after it introduced a different real short,
	also caught by ERC.
	* DevelopmentStandard.org: Documented a real gap found in the
	KiCad-AppImage procedure (GitHub API rate-limiting) and its
	workaround (the expanded_assets HTML endpoint).
	* ResearchJournal.org: New entry with the full, honest account
	of both the fixes delivered and the bugs found and reverted.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.47.0.

2026-08-11  Péter Felecan  <pfelecan@gmail.com>

	First netlist-driven KiCad schematic generator, delivered as a candidate (1.46.0).

	* Power/netlist/netlist.py (Component): New lib/part fields,
	parsed from the netlist's own libsource block. Additive.
	* Power/netlist/netlist.py (Netlist, load_netlist): New
	pin_names field, parsed from the netlist's own pinfunction
	field. Additive. Fixed a bug introduced while adding this (a
	deleted line that builds the actual net list).
	* Power/auto-layout/build_pixel3a_power_autolayout.py: New.
	This circuit's own caller of a new, generic 2D placement
	algorithm -- placement and rotation decided algorithmically
	from the real, loaded netlist. Reuses build_pixel3a_power.py's
	own PINS dictionary via ast parsing (avoiding a real side
	effect a plain import triggers), never retyped.
	* Makefile.am (kicad-autolayout): New target, separate from
	kicad-erc. Verified: 0 ERC errors, an exact match to the
	existing generator's own full warning profile, and a direct
	netlist comparison confirming genuine electrical equivalence
	(15 nets, identical membership, zero mismatches).
	* ResearchJournal.org: New entry with the full account,
	including two real bugs found via verification (a label-
	direction heuristic that shorted two pins together, caught by
	KiCad's own ERC; missing no-connect markers on genuinely
	unused pins).
	* FutureResearch.org, SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lesson on comparing magnitudes
	rather than checking one axis's sign first.
	* VERSION, NEWS: 1.46.0.

2026-08-10  Péter Felecan  <pfelecan@gmail.com>

	Netlist-driven generator promoted to primary; hand-placed generator preserved for reference (1.45.0).

	* Makefile.am (breadboard-regen, breadboard-verify): Now run
	build_pixel3a_breadboard_autolayout.py directly, producing
	$(BREADBOARD_SVG) at the established path. Promoted after
	Péter's own direct visual comparison confirmed the candidate
	matches the previous output.
	* Makefile.am (breadboard-handplaced-regen,
	breadboard-handplaced-verify): New. The previous, hand-placed
	generator, unchanged, writing to its own separately-named
	output file. Kept for reference and comparison, not deleted.
	* Dudhya.org: Updated the breadboard-diagram description, which
	had gone stale (still described an earlier, pre-verification
	state).
	* ResearchJournal.org: New entry with the full account.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.45.0.

2026-08-10  Péter Felecan  <pfelecan@gmail.com>

	First netlist-driven breadboard generator, delivered as a candidate, not a replacement (1.44.0).

	* Power/auto-layout/render.py (render): New optional extra_notes
	parameter -- for the one real, physically-necessary connection
	(chassis ground) that has no representation in any netlist,
	since it's outside the schematic's own electrical graph.
	* Power/auto-layout/build_pixel3a_breadboard_autolayout.py: New.
	This circuit's own caller of auto_layout.py's generic algorithm,
	matching the project's established generic-library/circuit-
	specific-caller pattern. Zero hand-placement anywhere.
	* Makefile.am (breadboard-autolayout): New target, separate from
	breadboard-verify. Confirmed the existing generator's own output
	remains genuinely byte-identical to its pre-session baseline.
	* ResearchJournal.org: New entry with the full account, including
	the current-flow trace (KiCad netlist + symbol library for
	electrical logic, generator source for coordinates, direct
	visual cross-check of both against the rendered SVG).
	* FutureResearch.org: Step 1 of the three named next steps marked
	STARTED with concrete progress.
	* SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lesson on netlist scope boundaries
	-- some real requirements are physical, not electrical, and no
	netlist can express them.
	* VERSION, NEWS: 1.44.0.

2026-08-10  Péter Felecan  <pfelecan@gmail.com>

	Cross-rail jumpers drawn only when genuinely needed; declutter rewritten as a recursive sweep (1.43.0).

	* Power/auto-layout/render.py (render): New conditional cross-
	rail jumper logic -- checks each rail net for genuine use on
	both halves before drawing a bridge, rather than assuming or
	never drawing one. Confirmed J1 as this circuit's real power
	source against the actual netlist first.
	* Power/auto-layout/auto_layout.py (run_declutter): Rewritten as
	a single explicit recursive left-to-right sweep, replacing the
	previous pass-based loop and its arbitrary cap. Instrumented the
	old implementation against the real circuit first, confirming
	every actual push happened in the first pass -- later passes
	only confirmed convergence. Verified identical output.
	* ResearchJournal.org: New entry with the full account, including
	the stock-take delivered this session.
	* FutureResearch.org: New item tracking the three substantial
	next steps Péter named directly.
	* SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lesson on verifying architectural
	intuitions with instrumentation before rewriting.
	* VERSION, NEWS: 1.43.0.

2026-08-10  Péter Felecan  <pfelecan@gmail.com>

	Removed a misleading rail-continuity visual; declutter re-runs after push-aside; new parametric-bounds safeguard (1.42.0).

	* Power/breadboard-gen/breadboard_lib.py (draw_board_background):
	Removed the rail-end bracket -- at full board height it read as
	a continuous line between top and bottom power rails, implying
	a connection real hardware doesn't guarantee.
	* Power/auto-layout/auto_layout.py (layout): Extracted declutter
	into run_declutter(), now called again after push-aside, since
	push-aside can create new overlaps declutter never got to check.
	* Power/auto-layout/auto_layout.py (layout): Removed declutter's
	old arbitrary row cap (4), replaced with the real physical limit
	(ROWS_PER_HALF - 1) -- the old cap was blocking correct output.
	* Power/auto-layout/auto_layout.py (verify_within_board_bounds):
	New. Checks every assigned row against ROWS_PER_HALF directly.
	Third safeguard alongside verify_connectivity and
	verify_no_hole_collisions, run automatically on every generation.
	* ResearchJournal.org: New entry, including the courtyard-vs-
	Fab/Silk reasoning stated precisely on direct question.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lessons -- a later pass can create
	problems an earlier pass exists to catch; misleading drawn
	continuity is the same mistake regardless of what it connects.
	* VERSION, NEWS: 1.42.0.

2026-08-07  Péter Felecan  <pfelecan@gmail.com>

	Size-aware placement (not just size-aware drawing); push-aside implemented; residual bugs from the previous round fixed (1.41.0).

	* Power/auto-layout/render.py (verify_no_hole_collisions): Now
	checks each passive's own bend segment against every other
	point, not just the two leg endpoints -- the previous version
	missed C1's own wire crossing C2's near pin entirely.
	* Power/auto-layout/auto_layout.py: Moved guess_shape,
	real_size_rows, guess_size_rows, and the footprint category
	mapping here from render.py -- placement decisions need real
	component size, not just rendering.
	* Power/auto-layout/auto_layout.py (Placement): New size_rows
	field. col_depth, the declutter pass, and wire-landing all now
	use each component's real footprint-derived size, not a fixed
	one-row-per-occupant assumption.
	* Power/auto-layout/auto_layout.py (layout, push-aside section):
	New. Relocates a component to a genuinely free adjacent column
	when its own column becomes too deep, letting the existing
	extra_links pass bridge it automatically. Fixed two real bugs
	found testing against the actual circuit: relocating onto an
	anchor's own pin column, and a column-ownership gap (low depth
	does not mean genuinely free).
	* Power/auto-layout/render.py (render): Off-board stub labels now
	use part_label()'s own collision-aware placement instead of
	direct, unchecked placement.
	* ResearchJournal.org: New entry with the full account, including
	a verified footprint inventory (all eleven real passives
	confirmed THT; RV1's own THT mapping found unused since it's
	classified as an anchor).
	* FutureResearch.org: Push-aside item marked DONE with an honest
	account of what was actually built and the bugs found building it.
	* SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lessons -- a safeguard checking
	two endpoints has not checked the path between them; "free" can
	have more than one real precondition.
	* VERSION, NEWS: 1.41.0.

2026-08-07  Péter Felecan  <pfelecan@gmail.com>

	Fixed a real gap in leg()'s far-column search; new physical hole-collision safeguard (1.40.0).

	* Power/breadboard-gen/breadboard_lib.py (leg): Far-column choice
	now genuinely searches for a verified-clear candidate position
	instead of only comparing relative clearance between two
	directions and trusting a fixed offset was safe. Verified
	byte-identical against the real generator.
	* Power/auto-layout/render.py (verify_no_hole_collisions): New.
	Checks every real lead position for two different leads landing
	in the same physical hole -- a genuinely different constraint
	from verify_connectivity()'s own electrical one.
	* Power/auto-layout/render.py (render): Passive near-pin
	positions now registered in a pass of their own before any
	far-leg search runs, fixing a real order-dependent bug the new
	check found immediately (R3 and C4 landing on the identical
	point).
	* ResearchJournal.org: New entry, including an honest, code-
	checked answer on which leg dimensions are footprint-derived
	(row length) and which are not (near/far column offset).
	* FutureResearch.org: New item -- pushing a crowded component
	sideways with an explicit wire, Péter's own suggestion for
	L1/D1, deliberately deferred rather than attempted hastily.
	* SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lessons -- physical vs. electrical
	constraints need separate checks; relative clearance comparison
	is not the same as verifying an absolute position is clear.
	* VERSION, NEWS: 1.40.0.

2026-08-07  Péter Felecan  <pfelecan@gmail.com>

	Trench bias generalized; wires now route around components, not just avoid their endpoints (1.39.0).

	* Power/breadboard-gen/breadboard_lib.py (jumper): New opt-in
	avoid parameter, default unchanged. Samples the curve at
	increasing heights until clear of everything already drawn.
	Verified byte-identical against the real generator.
	* Power/auto-layout/render.py (render): Both jumper() calls now
	use avoid=True.
	* Power/auto-layout/auto_layout.py (layout, declutter section):
	Generalized -- wider crowding threshold, iterated to a fixed
	point. Capped at row 4 after an unbounded cascade caused a real
	regression (a component pushed far enough to collide with an
	unrelated label).
	* ResearchJournal.org: New entry with the full account.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* DevelopmentStandard.org: New lessons -- endpoint vs. path
	collisions are different problems; iterative fixed-point passes
	need an explicit cap, not just a termination condition.
	* VERSION, NEWS: 1.39.0.

2026-08-07  Péter Felecan  <pfelecan@gmail.com>

	Fixed a real electrical bug: the trench does not carry continuity across halves (1.38.0).

	* Power/auto-layout/auto_layout.py (layout, extra_links section):
	Reverted grouping key from column-alone to (column, half) --
	column-alone was based on a false premise (breadboard columns
	are NOT continuous across the trench), confirmed against
	build_pixel3a_breadboard.py's own ic().
	* Power/auto-layout/auto_layout.py (layout, declutter section):
	Replaced unsafe half-flipping (silently disconnected D2 from
	its real net) with pushing a component further from the trench
	within its own correct half.
	* Power/auto-layout/auto_layout.py (layout): Register only the
	specific pin a passive attached through, not every pin -- fixes
	wrong-position wires for components bridging two different
	nets (L1).
	* Power/auto-layout/auto_layout.py (verify_connectivity): New.
	Checks every real net's own connectivity against the layout's
	own data. Verified against a deliberately reintroduced instance
	of the original bug, not just that it runs.
	* Power/auto-layout/render.py (render): Far-leg handling now
	connects a bridging component's other net using its real,
	rendered far-leg position. verify_connectivity() now runs
	automatically on every generation.
	* ResearchJournal.org: New entry with the full account.
	* FutureResearch.org, SessionHandoff.org: Corrected -- the prior
	round's own notes stated the false premise as settled fact.
	* DevelopmentStandard.org: Corrected an existing lesson that
	itself stated the false premise; new lessons on pin-level
	attribution and verifying safeguards with a negative test.
	* VERSION, NEWS: 1.38.0.

2026-08-06  Péter Felecan  <pfelecan@gmail.com>

	Ref-only labels, wire discretization at endpoints, adjacent-component decluttering (1.37.0).

	* Power/auto-layout/render.py (short_label): Now always returns
	empty string -- no value text on the diagram, ref only. Full
	value goes in the legend exclusively.
	* Power/breadboard-gen/breadboard_lib.py (flush_labels): Compact
	single-line label box when value is empty. Verified
	byte-identical against the real generator's own output.
	* Power/auto-layout/auto_layout.py (layout): New wire_row()
	helper -- extra_links wires land on the next free row in a
	column via col_depth, not on a component's own pin.
	* Power/auto-layout/auto_layout.py (layout): New declutter pass
	-- components in near-adjacent columns on the same half get
	split across halves.
	* Power/auto-layout/auto_layout.py (layout): Fixed extra_links
	grouping key from (column, half) to column alone -- a real bug,
	exposed by the declutter pass, that generated a spurious wire
	between two points already connected via column continuity.
	* ResearchJournal.org, FutureResearch.org, SessionHandoff.org:
	Updated.
	* DevelopmentStandard.org: New lesson on over-fine grouping keys.
	* VERSION, NEWS: 1.37.0.

2026-08-06  Péter Felecan  <pfelecan@gmail.com>

	Discretization restored, missing connections fixed, wire clutter reduced, real breadboard chrome shared (1.36.0).

	* Power/auto-layout/auto_layout.py (layout): BFS placement now
	reuses a target's own column instead of offsetting to a new one.
	New col_row tracks stacking order within a shared column.
	* Power/auto-layout/auto_layout.py (rail_nets_touched): New. One
	extra column per anchor per rail net touched.
	* Power/auto-layout/auto_layout.py (extra_links, computed in
	layout): New. Closes every net column-sharing alone didn't
	unify -- anchor-to-anchor pairs, and components bridging two
	different nets.
	* Power/auto-layout/auto_layout.py (order_anchors_by_connectivity):
	New. Anchors ordered by shared connectivity, not alphabetically.
	Weighted BFS distance; fixed a tie-breaking bug before it shipped
	(hop-count alone couldn't distinguish a two-net connection from a
	one-net connection at the same hop distance).
	* Power/auto-layout/render.py (render): Anchors draw rail pin
	stubs and to_rail() connections. Passives draw at their real
	shared-column row, no near-leg wire. extra_links drawn as
	explicit jumpers.
	* Power/auto-layout/render.py (short_label): New. Legend-based
	labeling -- short label on diagram, full value in a legend.
	* Power/breadboard-gen/breadboard_lib.py (draw_board_background):
	New. Extracted from build_pixel3a_breadboard.py: numbered
	columns, lettered rows, rail holes grouped in fours. Verified
	byte-identical against the real generator's own output.
	* ResearchJournal.org, FutureResearch.org, SessionHandoff.org:
	Updated.
	* FutureResearch.org: New item -- anchor sizing (U1, U2, Q1, J1)
	against real footprint geometry, deliberately deferred per
	Péter's own instruction.
	* DevelopmentStandard.org: New lesson on greedy-heuristic
	tiebreakers.
	* VERSION, NEWS: 1.36.0.

2026-08-06  Péter Felecan  <pfelecan@gmail.com>

	Real footprint geometry integrated into auto-layout sizing (1.35.0).

	* Power/auto-layout/render.py (real_size_rows): New. Primary
	passive sizing source, reading real courtyard width via
	footprint.py. guess_size_rows kept as fallback.
	* Power/auto-layout/render.py (_CATEGORY_FOOTPRINT): New. THT
	footprint per passive category, per Péter's stated preference.
	* Power/auto-layout/footprint.py (Footprint.courtyard_size): New.
	* ResearchJournal.org, FutureResearch.org, SessionHandoff.org:
	Updated.
	* ChangeLog: Corrected to GNU's own terse, per-file convention;
	prior entries had drifted into narrative prose.
	* DevelopmentStandard.org: New lesson on ChangeLog style.
	* VERSION, NEWS: 1.35.0.

2026-08-06  Péter Felecan  <pfelecan@gmail.com>

	Footprint question answered honestly (not usable yet); three more shared-library fixes; a real width-cutoff regression found and fixed (1.34.0).

	* Power/netlist/ (investigation, no code change): Checked this
	project's own real, loaded netlist directly -- every component's
	footprint field is empty. Traced to why: kicad_gen.py's own
	place() never sets one. Recorded as a new FutureResearch.org
	item requiring Péter's own decision on real physical parts,
	rather than guessed at unilaterally.
	* Power/breadboard-gen/breadboard_lib.py: diode() gained the
	rows parameter it was missing (deferred from the prior round).
	Verified byte-identical against the real generator afterward.
	* Power/breadboard-gen/breadboard_lib.py: jumper() gained an
	optional height parameter, default unchanged, so a long-distance
	connection can arc high enough to actually clear whatever sits
	between its endpoints. Verified byte-identical.
	* Power/breadboard-gen/breadboard_lib.py: Found a real,
	confirmed regression -- components rendering outside the canvas
	once size-aware spacing made some wider. Traced to the actual
	mechanism (leg()'s own far-leg placement bypasses col_x(), so
	the old width tracker never saw it) rather than patched around;
	added rightmost_edge(), reading true pixel extent from the
	occupied-region registry. Verified byte-identical against the
	real generator.
	* Power/auto-layout/render.py: New guess_size_rows(), an
	explicitly-labeled, honest stand-in for real footprint data
	(value-string heuristic: electrolytic capacitance, trimmer pots,
	and higher-current diodes get wider leg spans). Jumper routing
	now scales arc height with actual connection distance and uses
	proper bulge direction on far-leg jumps. Canvas sizing fixed to
	use the new rightmost_edge(), not just named columns.
	* ResearchJournal.org: New entry with the full account, including
	a near-miss (a suspected missing anchor that turned out to be a
	bug in the debugging check itself, not the renderer).
	* FutureResearch.org: New "Decide real footprints" item; progress
	note on the automatic-layout item.
	* DevelopmentStandard.org: Two new reusable lessons -- trusting
	genuine drawn geometry over a named-position-only tracker for
	bounds calculations; verifying a heuristic-workaround decision is
	actually necessary before substituting it, and saying so plainly.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.34.0.

2026-08-06  Péter Felecan  <pfelecan@gmail.com>

	First automatic-layout prototype; a shared drawing library extracted (and one of its own latent bugs found and fixed) (1.33.0).

	* Power/breadboard-gen/breadboard_lib.py: New. The generic
	drawing/layout primitives extracted from
	build_pixel3a_breadboard.py, so Power/auto-layout/'s own
	rendering could reuse them rather than duplicate logic that took
	several rounds of real bugs to get right. Verified
	byte-identical: the working generator's own output, saved as a
	baseline before touching anything, matched exactly (MD5) after
	being rewired to import from this library.
	* Power/breadboard-gen/breadboard_lib.py: Found during the
	extraction: a module-level integer reassigned via `global`
	inside col_x() does not propagate through `from module import *`
	the way the shared mutable lists do -- failed loudly (NameError)
	rather than silently. Fixed with a max_col() getter function.
	* Power/breadboard-gen/breadboard_lib.py: ic()'s own component
	label used a fixed, centered position that bypassed the
	collision-avoidance system entirely -- a latent bug invisible for
	fifteen review rounds because the hand-tuned circuit's own
	anchors were always spaced far enough apart; the new auto-layout
	prototype's tighter spacing triggered it on its first render.
	Fixed by routing it through the real part_label() system;
	re-verified build_pixel3a_breadboard.py itself afterward (still
	zero net-check failures, zero label overlaps, a small and fully
	explained diff, confirmed correct by direct visual check).
	* Power/auto-layout/auto_layout.py: New. A research prototype:
	greedy, BFS-style, pin-adjacent placement, tested against this
	project's own real circuit. Two real bugs found by testing
	rigorously rather than trusting a successful-looking first run
	(a pin-column collision from index wrapping; a blind placement
	offset landing on an already-placed pin) -- both fixed. Zero
	column collisions, zero label overlaps, passive clustering that
	matches in spirit what fifteen hand-placement review rounds
	converged on.
	* Power/auto-layout/visualize.py: New. A minimal dots-and-boxes
	visualization, used to find two more real bugs by simply looking
	at the output (string-sorted pin identifiers; anchor pins given
	columns regardless of relevance, causing sprawl and a label
	collision) -- both fixed.
	* Power/auto-layout/render.py: New. Renders the algorithm's
	placement decisions using breadboard_lib.py's own real component
	shapes, rails, and wiring logic -- not a second, divergent
	rendering system.
	* Makefile.am: New, explicitly experimental auto-layout-demo
	target; new files added to EXTRA_DIST and the executable-bit
	check.
	* ResearchJournal.org: New entry with the full account, including
	honest open gaps (semantic-free pin-half splitting, an
	inconsistent diode leg length, visual density in some wiring,
	tested against only one circuit so far).
	* FutureResearch.org: Automatic-layout item updated to STARTED
	with an honest summary of actual progress.
	* DevelopmentStandard.org: Three new reusable lessons -- verifying
	a library extraction by byte-identical output, not just "still
	runs"; the import-star/immutable-global pitfall; a new caller
	exercising old code under different conditions than it has ever
	run under before as a real way to find latent bugs.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.33.0.

2026-08-05  Péter Felecan  <pfelecan@gmail.com>

	Breadboard tool's verification gap closed; shared netlist loader built, verified, and its assertions now integrated into the breadboard generator (1.32.0).

	* Power/breadboard-gen/build_pixel3a_breadboard.py: The shipped
	make breadboard-verify was a weaker, external reimplementation of
	the tool's own real verification -- re-parsing only rendered
	label rects, blind to wires and component bodies. Added a proper
	internal verify() checking every label against every registered
	region (bodies, wires, other labels) together, run automatically
	on every generation. Immediately found and fixed two real,
	previously-invisible overlaps (the VOUT_4V2 heading and RV1's
	wiper label, both sitting on wire curves).
	* Power/breadboard-gen/build_pixel3a_breadboard.py: Every
	electrical claim the script makes is now asserted, at generation
	time, against the real netlist loaded via Power/netlist/netlist.py
	-- not the physical layout itself (unchanged, still fifteen
	rounds of human judgement), only the claim that two pins share a
	net. 42 assertions confirmed the existing hand-transcription
	correct; a systematic coverage check then found ten real pins on
	GND/VBUS_9V (J1 and U1 each expose several physical pins on these
	same nets, not separately drawn) with no assertion at all -- a
	real, if narrow, gap, now closed.
	* Makefile.am: breadboard-verify now wraps the tool's own internal
	check rather than reimplementing a weaker version externally.
	breadboard-regen now depends on kicad-regen and passes KICAD_CLI
	through, since the script requires the real schematic to load a
	netlist from it -- a real dependency gap found by trying a clean
	build from scratch.
	* Power/netlist/netlist.py: New. A small, hand-written
	S-expression parser plus Component/Net/Netlist data structures,
	loading directly from kicad-cli's own `sch export netlist`
	output -- the shared netlist source item from FutureResearch.org.
	* Power/netlist/test_netlist.py: New. Permanent test verifying
	the loader against facts about this project's own circuit that
	have been hand-verified repeatedly elsewhere; all checks pass.
	* Makefile.am: New netlist-verify target.
	* make-archive: New files added to the executable-bit check.
	* ResearchJournal.org: New entry for all of the above, including
	an explicit correction where the entry's own "stopped here"
	framing didn't match what an interrupted continuation session
	actually did -- reconciled by inspecting the code directly rather
	than trusting the prior summary.

	* FutureResearch.org: Shared netlist item updated to STARTED.
	* DevelopmentStandard.org: New lesson -- a verification step
	built during development and one that ships are not automatically
	the same check.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.32.0.

2026-08-05  Péter Felecan  <pfelecan@gmail.com>

	Breadboard-style companion tool integrated into the project tree; fifteen review rounds synthesized (1.30.0).

	* Power/breadboard-gen/build_pixel3a_breadboard.py: New. The
	breadboard-style connectivity diagram generator, previously only
	ever delivered as one-off files in conversation across fifteen
	review rounds -- now a proper, headed, versioned project source
	file.
	* Makefile.am: New breadboard-regen/breadboard-verify targets,
	matching the kicad-regen/kicad-erc pattern. New source file added
	to EXTRA_DIST; generated SVG excluded via .tar-exclude, matching
	every other generated artifact.
	* make-archive: Breadboard tool added to the executable-bit
	safety check.
	* ResearchJournal.org: New synthesis entry distilling all fifteen
	review rounds by theme (the systemic same-column electrical-
	safety bug and its fix; discretization; the label-placement
	architecture and its several distinct bugs; routing direction;
	honest current limitations).
	* DevelopmentStandard.org: New "Breadboard-style diagrams"
	section, the durable, reusable rules extracted from the above.
	* FutureResearch.org: Two new items -- a shared netlist source
	for both generators (confirmed feasible via kicad-cli's own
	netlist export), and automatic layout.
	* Dudhya.org: Pointer to the new companion tool added to the
	Power management section.
	* SessionHandoff.org: Updated -- Fritzing conclusion and the
	full breadboard-tool arc were still missing; Next Steps
	corrected to the actual agreed next step.
	* VERSION, NEWS: 1.30.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	New KicadGen.org language reference; Fritzing research started (1.29.0).

	* KicadGen.org: New. Practical reference for the kicad-gen
	scripting language (placement, wiring, labels, direction/justify
	rule, pin-adjacent placement, verification checklist).
	* Makefile.am: KicadGen.org added to ORG_DOCS (covered by
	dist_doc_DATA automatically, no separate EXTRA_DIST entry).
	* Index.org: New link under Reference content.
	* FutureResearch.org: Fritzing item moved to STARTED with
	refined scope (scripting + netlist transfer, per Péter).
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.29.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Layout redesign: pin-adjacent placement, component-overlap check (1.28.0).

	* Power/kicad-gen/build_pixel3a_power.py: R1/C1/C2 repositioned
	north of U1, pin-adjacent (pin assignments swapped to match). L1
	reverted to horizontal; D1 realigned to match. C4 and an
	annotation moved clear of RV1. Fixed a component-body overlap
	(C1/C2 2.5mm apart) by staggering. Fixed a page-overflow bug.
	* Power/kicad-gen/kicad_gen.py, DevelopmentStandard.org: New
	verification step documented (minimum pairwise component
	distance). New sections: position/movement vocabulary,
	pin-adjacent placement technique, honest limitation on
	general-purpose crossing-free layout.
	* Dudhya.org (nexus-5): Power management section updated to match.
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.28.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Fix Q_PMOS_GSD library-location bug, confirmed via KiCad 10.0.5's own bundled symbols (1.27.0).

	* Power/kicad-gen/build_pixel3a_power.py: Q1 now uses the
	Transistor_FET library, not Device -- Q_PMOS_GSD moved between
	KiCad versions; pin geometry unchanged. SYM_DIR now overridable
	via KICAD_SYM_DIR.
	* Power/kicad-gen/kicad_gen.py: Module docstring documents the
	confirmed root cause and the fix.
	* DevelopmentStandard.org: Electronics section extended with the
	confirmed cross-version library-location finding.
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.27.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Fix real cross-machine symbol-lookup failure; configure.ac checks (1.26.0).

	* Power/kicad-gen/kicad_gen.py: extract_and_qualify() now finds a
	symbol's declaration with a regex tolerating leading whitespace
	variation, not a rigid literal. A lookup failure now raises a
	specific, actionable RuntimeError (file, symbol, exact grep
	commands to run) instead of a raw ValueError traceback.
	* configure.ac: New checks for kicad-cli (AC_CHECK_PROGS) and the
	kicad-symbols package (checked against Device.kicad_sym), warning
	rather than failing, matching the existing optional-tool pattern.
	* DevelopmentStandard.org: Electronics section extended with the
	cross-machine robustness lesson and the configure.ac checks.
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.26.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Fix real label-justify bug and wire-routing bug; regeneration-only delivery (1.25.0).

	* Power/kicad-gen/kicad_gen.py: label() now uses the correct
	justify setting per direction (found by measuring rendered SVG
	geometry). Fixed for right/left/down; "up" documented as
	unresolved.
	* Power/kicad-gen/build_pixel3a_power.py: Compressed to fit A4
	with margin. L1 rotated vertical. RV1 FB pin, C1/C2 value text,
	and R1's wire routing (L-shaped, to avoid crossing U1's other
	pins) corrected. Revision now passed as a command-line argument.
	* Makefile.am: kicad-regen passes $(PACKAGE_VERSION) to the build
	script; kicad-erc depends on kicad-regen. Generated schematic/
	project files removed from EXTRA_DIST.
	* .tar-exclude: Explicit exclusion for the generated files.
	* make-archive: Fixed a real, reproducible bug (not a one-off
	fluke): writing the output archive directly into the directory
	being tarred caused tar to abort with "file changed as we read
	it" under set -e. Now writes to a temp file outside the source
	tree first, then moves it into place. Added the two new Python
	tool files to make-archive's own executable-bit safety check.
	* DevelopmentStandard.org: Electronics section extended with the
	SVG-measurement method, the justify-per-direction table, and the
	shared-pin-column wire-routing lesson.
	* Dudhya.org (nexus-5): Power management section updated to match.
	* FutureResearch.org: Fritzing item updated with Péter's specific
	tool lead (xml2net).
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.25.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Fix real wiring-bridge bug; Makefile integration (1.24.0).

	* Power/kicad-gen/kicad_gen.py: label() now draws a fixed-length
	stub wire rather than placing the label at the pin's exact
	coordinate (fixes visual clutter). Documents the confirmed rule:
	labeled pins on the same component must point away from each
	other, not toward.
	* Power/kicad-gen/build_pixel3a_power.py: Fixed four components
	(C3, C4, D2, Q1) whose labeled pins pointed toward each other,
	bridging unrelated nets. Zero ERC errors confirmed project-wide.
	* Power/dudhya-pixel3a-battery-free-power.kicad_sch,
	Power/dudhya-pixel3a-battery-free-power.kicad_pro: Regenerated.
	* Makefile.am: New kicad-regen and kicad-erc targets.
	* DevelopmentStandard.org: Electronics section extended with the
	direction rule, the stub-length lesson, and Makefile usage.
	* Dudhya.org (nexus-5): Power management section updated to match.
	* FutureResearch.org: New item for breadboard/Fritzing research.
	* SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.24.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	New reusable KiCad tool; ChangeLog/NEWS terseness fixed (1.23.0).

	* Power/kicad-gen/kicad_gen.py: New. Reusable library for
	generating KiCad 7+ schematics; documents all fixes found across
	this project's own schematic work.
	* Power/kicad-gen/build_pixel3a_power.py: New. Project-specific
	build script using the library.
	* Power/dudhya-pixel3a-battery-free-power.kicad_sch,
	Power/dudhya-pixel3a-battery-free-power.kicad_pro: Rebuilt. A4
	page (was A2); tighter, calibrated component spacing; corrected
	USB-C GND/SHIELD label direction. Zero ERC errors maintained.
	* DevelopmentStandard.org: New "Electronics" section (KiCad/
	AppImage usage, scripting approach, verification discipline).
	* Dudhya.org (nexus-5): Power management section updated to match.
	* ChangeLog, NEWS: Entries from 1.17.1 through 1.22.0 rewritten
	in proper terse style; narrative content confirmed already
	present in ResearchJournal.org.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* Makefile.am: New tool files added to EXTRA_DIST.
	* VERSION, NEWS: 1.23.0.

2026-08-03  Péter Felecan  <pfelecan@gmail.com>

	Major fix: KiCad schematic now genuinely ERC-clean (1.22.0).

	* Power/dudhya-pixel3a-battery-free-power.kicad_sch,
	Power/dudhya-pixel3a-battery-free-power.kicad_pro: Rebuilt.
	Fixed pin-position calculation (Y-axis sign, symbol rotation).
	Added PWR_FLAG markers; two pins changed to no-connect. Wider
	component spacing. Zero ERC errors (was 79). See
	ResearchJournal.org for the debugging trail.
	* Dudhya.org (nexus-5): Power management section updated to match.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.22.0.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	Correct verification status; authoritative wiring spec added (1.21.0).

	* Power/dudhya-pixel3a-battery-free-power.kicad_pro: New. KiCad 7
	project file.
	* Dudhya.org (nexus-5): Power management section corrected to
	flag the generated schematic as unreliable. New "Complete wiring
	specification" subsection (full parts list and every net,
	derived from the STUSB4500 datasheet). Added reverse-current
	diode D2. Added ST citation links (STUSB4500, STL6P3LLH6).
	* Makefile.am: New project file added to EXTRA_DIST.
	* ResearchJournal.org: New entry.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.21.0.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	New: KiCad battery-free power schematic; Instructables source confirmed (1.20.0).

	* Power/dudhya-pixel3a-battery-free-power.kicad_sch: New.
	Discrete-component equivalent (STUSB4500, P-MOS switch, XL4015
	buck converter) of the source's module-based circuit. See
	ResearchJournal.org for the file-generation debugging trail.
	* Dudhya.org (nexus-5): Power management subsection rewritten
	with the confirmed, device-matched Instructables procedure. BOM
	confirmed coherent.
	* Makefile.am: New schematic file added to EXTRA_DIST.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.20.0.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	New: Google Pixel 3a bring-up section, hands-on work begun (1.19.0).

	* Dudhya.org (nexus-5): New "TODO Google Pixel 3a (google-sargo)"
	top-level section --- Target, Prerequisites, Procedure, Known
	caveats, Sensor inventory, Power management subsections. Power
	management subsection starts the battery-free work.
	* FutureResearch.org: Second-device and battery-power items
	cross-referenced with the new Pixel 3a work.
	* ResearchJournal.org: New entry.
	* SessionHandoff.org: Condensed and updated.
	* VERSION, NEWS: 1.19.0.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	Amend: Research Tool Workflow rule extended to launch timing (1.18.1).

	* DevelopmentStandard.org: "Critical: Research Integration" renamed
	"Critical: Research Tool Workflow" and extended to cover launch
	timing (present the research button immediately once discussion
	closes) and integration timing (proceed same-turn unless the
	findings need the user's decision).
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.18.1.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	New: OS choice re-evaluation, third annex (1.18.0).

	* Dudhya.org (nexus-5): New top-level "Annex: Operating system
	choice re-evaluation (2026-08-02)" section, comparing genuine
	mainline-Linux candidates (Mobian, Mobile NixOS, Maemo Leste)
	against Halium-based ones (Droidian, Ubuntu Touch) and Sailfish
	(proprietary). postmarketOS confirmed correct on every criterion.
	* FutureResearch.org: Second-device item amended with the
	reinforcing GPS/SDM845 finding.
	* ResearchJournal.org: New entry.
	* SessionHandoff.org: Condensed and updated.
	* VERSION, NEWS: 1.18.0.

2026-08-02  Péter Felecan  <pfelecan@gmail.com>

	Fix: missing citations in extended annex sections (1.17.1).

	* Dudhya.org (nexus-5): "Battery-free operation feasibility" and
	"Cybersecurity and binary-blob posture" sections had sources named
	without an actual link. Added the real primary source for each
	(Kédio Blog, postmarketOS upstreaming patches, XDA thread,
	postmarketOS blog post, QualPwn/CISA/Kr00k primary sources,
	postmarketOS wiki pages).
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.17.1.

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	New rule: Research Integration; extended device evaluation (1.17.0).

	* DevelopmentStandard.org: New "Critical: Research Integration"
	rule, beside the existing "Critical: Documentation Synchronization"
	rule --- Research-tool findings must be added or amended into the
	project's main document, not left as a standalone artifact. Scoped
	to substantial investigations, not routine incidental searches.
	* Dudhya.org (nexus-5): Applied the new rule immediately to the
	extended second-device evaluation already returned this session.
	New "Physical dimensions and weight," "Battery-free (external DC)
	operation feasibility," and "Cybersecurity and binary-blob posture"
	sections, plus amendments to "Summary and recommendation" and
	"Caveats." New tables kept narrow (learned from the prior
	table-width incident); re-verified via a direct LaTeX log check,
	confirming no new overfull/underfull alignment introduced.
	* FutureResearch.org: "Acquire a second device" item amended with
	the OnePlus 6/6T battery-free R&D unit finding; "Power the device
	without its battery" item cross-referenced with the same finding.
	* ResearchJournal.org: New entry with the rule's rationale and the
	extended-evaluation integration.
	* SessionHandoff.org: Updated; also fixed a real markdown-vs-
	Org-mode bold-syntax bug (**bold** instead of *bold*) found while
	reviewing it.
	* VERSION, NEWS: 1.17.0 (minor: new project rule plus substantial
	integrated content).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	New: second-device selection research annex (1.16.0).

	* Dudhya.org (nexus-5): New top-level "Annex: Second-device
	selection research (2026-08-01)" section --- Research-tool report
	on postmarketOS community-tier devices, converted to this
	project's own Org-mode house style with full citations preserved,
	not pasted as markdown. Recommends Xiaomi Poco F1
	(xiaomi-beryllium), with OnePlus 6 and Google Pixel 3a as ranked
	alternates; supersedes the Nexus 7 2013 as the default second
	device (its GPS was very likely tied to the LTE-cellular variant,
	not the WiFi-only asus-flo this project had targeted). A real
	347pt overfull-hbox LaTeX defect in the ranking table was caught
	by checking the build log directly and fixed by redesigning the
	table (six short columns plus footnotes) rather than a font-size
	hack; final overflow (33.5pt) matches several other pre-existing,
	long-tolerated minor overflows elsewhere in the document.
	* FutureResearch.org: New "Acquire a second device: Xiaomi Poco F1"
	item, superseding the implicit Nexus 7 plan.
	* ResearchJournal.org: New entry with the full research summary,
	the Org-mode conversion approach, and the table-defect fix.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.16.0 (minor: substantial new reference content).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	Confirmed power-save fix; AP load-stall accepted as a limitation (1.15.0).

	* Provisioning/dudhya-host-connect: Extended the interface-
	collision safety check (previously only in radio mode) to cable
	mode too --- a real host reboot was observed assigning the wired
	ethernet and USB gadget the same interface name, confirming this
	as a real risk there as well. Re-verified with shellcheck (zero
	issues).
	* Dudhya.org (nexus-5): Confirmed the AP power-save mitigation
	resolved the idle-link instability. New "Known quirk: host reboot
	can assign the wired ethernet and USB gadget the same interface
	name" section. New accepted-limitation entry for AP-mode
	sustained-load stalls (matched against real documented brcmfmac
	CPU/driver-stall reports), with practical guidance to prefer cable
	mode for heavy transfers.
	* ResearchJournal.org: New entry with the full diagnosis for both
	findings and the decision not to pursue the load-stall issue
	further, matching the poweroff precedent.
	* FutureResearch.org: Power-save confirmation item resolved and
	removed; radio-mode item updated to suggest testing with light
	traffic specifically.
	* SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.15.0 (minor: real fix plus significant
	documented findings).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	Confirmed AP auth fix; new connectivity-instability mitigation (1.14.0).

	* Provisioning/dudhya-host-connect: New. radio mode now disables
	power-save on the host's own WiFi interface (iw dev <iface> set
	power_save off, non-fatal if unsupported) --- mitigation for a
	real, matched connectivity-instability issue (periodic packet
	loss, eventual re-authentication failure) found once AP mode
	actually connects. Re-verified with shellcheck (zero issues).
	* Dudhya.org (nexus-5): Confirmed the dudhya-wifi-mode
	restart-sequence fix was the actual cause of the earlier AP
	authentication issue. New "AP connectivity is unstable" open item
	with the researched hypothesis and applied mitigation. Provisioning
	section notes the new power-save mitigation.
	* ResearchJournal.org: New entry confirming the auth-fix cause and
	documenting the new instability diagnosis (a real, closely-matched
	historical bug report on the same Broadcom chip family) and the
	fix applied.
	* FutureResearch.org, SessionHandoff.org: Updated --- auth item
	resolved; new item tracks confirming the power-save mitigation.
	* VERSION, NEWS: 1.14.0 (minor: real mitigation added to shipped
	script).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	Fix: dudhya-wifi-mode config-reload bug; WiFi station confirmed (1.13.0).

	* WiFi/dudhya-wifi-mode: IMPORTANT FIX. Now unconditionally stops
	every service either mode could have running (not just the other
	mode's) before starting the target mode's own, on every
	invocation. Previously, re-running in the same mode after only
	editing a config file (e.g. hostapd's passphrase) could leave a
	stale, already-loaded value in memory, since OpenRC's own "start"
	on an already-started service does not reload it. Re-verified with
	shellcheck (zero issues).
	* WiFi/hostapd.conf.example, WiFi/wpa_supplicant.conf.example:
	Added explicit CHANGE THIS markers and inline documentation of
	each file's specific syntax rules (hostapd.conf: no quotes, "#" is
	a comment marker, 8-63 characters; wpa_supplicant.conf: quotes
	required) --- addressing the other plausible cause of an
	"incorrect password" AP-mode symptom.
	* Dudhya.org (nexus-5): Switching section's example corrected to
	include the WiFi/ path prefix. Open items updated: station mode
	confirmed working; AP mode's authentication issue documented with
	both diagnosed mechanisms and their fixes.
	* ResearchJournal.org: New entry with the full diagnosis (real
	sourced evidence for both candidate mechanisms) and both fixes.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.13.0 (minor: real fix to shipped script
	behavior, not just documentation).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	Confirmed on hardware: Provisioning cable mode; USB quirk found (1.12.1).

	* Dudhya.org (nexus-5): Provisioning section updated with real
	hardware confirmation of cable mode (exact interface names,
	package operations). New "Is cable and radio mutually exclusive?"
	subsection. New "Known quirk: USB not detected if the cable is
	connected after boot, not before" subsection, with research
	(a real N900 kernel patch, a real postmarketOS issue on another
	device) and the practical workaround.
	* ResearchJournal.org: New entry with the real-hardware
	confirmation detail, the USB cold-boot research, and the
	cable/radio exclusivity clarification.
	* FutureResearch.org, SessionHandoff.org: Updated --- Provisioning
	item narrowed to just radio mode remaining unconfirmed.
	* VERSION, NEWS: 1.12.1 (patch: verification and documentation,
	no new code).

2026-08-01  Péter Felecan  <pfelecan@gmail.com>

	New: Provisioning scripts (host+device connectivity) (1.12.0).

	* Provisioning/dudhya-host-connect: New. Auto-detects the USB
	gadget interface from dmesg (cable mode) or the locally-joined
	AP-subnet interface (radio mode, expects the host already joined
	manually), assigns/confirms addressing, and NATs out through
	whichever interface holds the host's own default route (also
	auto-detected).
	* Provisioning/dudhya-device-update: New. Sets a default route/DNS
	for cable (172.16.42.2/usb0) or radio (dnsmasq lease file, falling
	back to 192.168.4.2), then apk update + upgrade or apk add <pkgs>.
	* Both: fixed a real set -e bug found by testing shell semantics
	directly (a minimal reproduction) rather than just reading the
	code back --- a failed detection function inside a bare
	var="$(func)" assignment aborts the script immediately under
	set -e, before the intended -z fallback check runs. Fixed at
	every affected call site with "$(func || true)".
	* Makefile.am: Added both new scripts to EXTRA_DIST.
	* make-archive: Added both to the executable-bit check list.
	* Dudhya.org: New "Provisioning: scripted package installation/
	upgrade" section, including the radio-mode topology assumption
	flagged explicitly.
	* ResearchJournal.org: New entry with the full design, the
	assumption reasoning, and the set -e bug/fix/verification.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.12.0 (minor: new capability).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	New: WiFi station/AP mode switching; two permission bugs fixed (1.11.0).

	* WiFi/dudhya-wifi-mode: New. Switches wlan0 between station
	(wpa_supplicant + udhcpc) and AP (hostapd + dnsmasq) mode,
	switching not concurrent per project decision. Follows
	DevelopmentStandard.org's shell-script conventions ($Id/copyright
	header, Allman-aligned braces, no Hungarian notation) read in full
	before writing anything. Zero shellcheck warnings.
	* WiFi/hostapd.conf.example: New. driver=nl80211, CCMP-only.
	* WiFi/dnsmasq.conf.example: New. 192.168.4.0/24, avoiding the USB
	link's existing 172.16.42.0/24.
	* WiFi/wpa_supplicant.conf.example: New.
	* make-archive: Added the missing copyright/license header, and
	implemented the executable-bit check the script's own comment had
	promised since 1.6.0 without ever adding. Doing so immediately
	caught OpenRC/dudhya-sensord having actually lost its executable
	bit; fixed.
	* OpenRC/dudhya-sensord: Added the missing $Id/copyright header
	(same gap as make-archive); restored the executable bit found
	missing by make-archive's new check.
	* Makefile.am: Added all four new WiFi/ files to EXTRA_DIST,
	checked individually against .tar-exclude for collisions given
	the exact category of past mistake in this area.
	* Dudhya.org: New "WiFi: station/AP mode switching" section.
	* ResearchJournal.org: New entry with the full design, the
	shell-script convention check, and both permission-bug fixes.
	* FutureResearch.org, SessionHandoff.org: Updated.
	* VERSION, NEWS: 1.11.0 (minor: new capability).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	New: status topic and on-demand liveness refresh (1.10.0).

	* Src/dudhya-sensord.c: New dudhya/<device>/status topic (retained,
	published at startup: version via the existing autoconf VERSION
	macro, started_ts, pid, which sensors were found) and a paired
	status/get request topic: any received message (content ignored)
	triggers an immediate re-publish with a fresh ts, giving both an
	on-demand refresh and a liveness check a purely retained message
	can't provide alone. New struct StatusInfo, PublishStatus,
	OnMessage; mosquitto_new's previously-unused obj parameter now
	carries the callback context; mosquitto_message_callback_set and
	mosquitto_subscribe wired in after connecting. VERSION fallback
	added for manual test compiles outside the Makefile.
	* Dudhya.org (nexus-5): New "Identification and liveness" section;
	status added to the topic-tree table.
	* ResearchJournal.org: New entry with the design decision and
	end-to-end verification (real broker, real subscriber, confirmed
	ts increments while started_ts stays fixed).
	* SessionHandoff.org: Rewritten, condensing today's accumulated
	history.
	* VERSION, NEWS: 1.10.0 (minor: new capability).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Fix: --calibrate-accel needs sudo; verification round (1.9.1).

	* Dudhya.org (nexus-5), sensord.conf.example, Src/dudhya-sensord.c:
	Corrected the --calibrate-accel usage examples to include sudo
	(writing /etc/dudhya/sensord.conf failed without it).
	* ResearchJournal.org: New entry --- static calibration
	re-confirmed with a second real sample set (real magnitude math
	for accel/gyro/magn); a first informal dynamic test explained as
	expected-chaotic (1Hz undersampling of uncontrolled hand motion,
	not a real dynamic verification); the OpenRC "swap" message
	explained as a pre-existing, unrelated system quirk; the
	version/uptime MQTT status idea discussed, not yet implemented.
	* FutureResearch.org: Dynamic-verification item updated with a
	concrete next-attempt plan (higher rate_hz, controlled motion).
	* SessionHandoff.org: Updated; notes the open version/uptime scope
	question awaiting Péter's answer.
	* VERSION, NEWS: 1.9.1 (patch: fixes and verification, no new
	feature yet).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	MILESTONE: real sensor telemetry; three calibration fixes (1.9.0).

	* Src/dudhya-sensord.c: dudhya-sensord running on the physical
	Nexus 5, publishing real telemetry, revealed three calibration
	problems, all fixed:
	  - Accelerometer: traced in_accel_*_calibbias to the actual
	    inv_mpu6050 kernel driver source (drivers/iio/imu/inv_mpu6050/
	    inv_mpu_core.c) --- a live hardware register the chip applies
	    before "raw" is read, not a value this daemon needs to add in
	    software. New --calibrate-accel command-line mode (device
	    lying flat, screen up), computing and persisting
	    accel_bias_x/y/z to the config file via the new SaveAccelBias
	    (rewrites only those three lines, preserves everything else).
	  - Gyroscope: new CalibrateGyro, automatic zero-rate calibration
	    at every startup (safe: a stationary gyro reads ~0 regardless
	    of orientation, unlike gravity).
	  - Magnetometer: gMagnCorrectionFactor, an empirically-derived
	    x10 correction.
	All three verified against the actual compiled binary with fake
	sensor data reproducing the real device's readings, not just
	worked out on paper. Compiles clean with -Wall -Wextra -std=c99
	-O2 throughout.
	* sensord.conf.example: Documents the new accel_bias_x/y/z keys.
	* Dudhya.org (nexus-5): New "Sensor corrections" section; the
	calibration step added to "Build, configure, and run"; "Open
	items" updated (daemon confirmed running; magnetometer conversion
	addressed but not yet tested dynamically).
	* ResearchJournal.org: New entry with the full diagnosis for all
	three sensors and the verification method.
	* FutureResearch.org: Item updated from "deploy and verify" (done)
	to "verify under dynamic/moving conditions" (not yet done ---
	Péter's own caveat).
	* SessionHandoff.org: Rewritten for this milestone.
	* VERSION, NEWS: 1.9.0 (minor: new capability).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Resolve: mosquitto_sub "Bad file descriptor" (1.8.3).

	* Dudhya.org (nexus-5): Documented that the error was simply the
	broker not yet started, and framed it as a recognized pattern of
	this environment's tooling (same class of confusing error as the
	earlier apk/DNS one). Updated "Open items": broker connectivity
	confirmed on the physical unit; the OpenRC service-name assumption
	is now confirmed correct too.
	* ResearchJournal.org: New entry.
	* FutureResearch.org, SessionHandoff.org: Updated to reflect the
	narrower remaining gap (the daemon itself, not broker plumbing).
	* VERSION, NEWS: 1.8.3 (patch: documentation resolution).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Fix: make dist missing files; /etc/dudhya not created (1.8.2).

	* Makefile.am: Added bootstrap and Constitution.org to EXTRA_DIST
	--- neither was ever listed in any distributed-file variable, so
	both were silently missing from make dist's output. Found by
	auditing every project file against the actual DISTFILES list,
	not just fixing the one reported symptom (bootstrap).
	* Dudhya.org (nexus-5): Added the missing "sudo mkdir -p
	/etc/dudhya" step before copying the example config there.
	* ResearchJournal.org: New entry covering both fixes and their
	verification (rebuilt make dist, confirmed both files present and
	that bootstrap's executable bit survives and the script runs).
	* SessionHandoff.org: Updated; also notes the still-open
	mosquitto_sub "Bad file descriptor" investigation.
	* VERSION, NEWS: 1.8.2 (patch: bug fixes).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Clarify: host NAT/forwarding doesn't survive a reboot (1.8.1).

	* Dudhya.org (nexus-5): Noted that sysctl -w/iptables -A are
	runtime-only and don't persist across a host reboot; added a
	quick check (ip_forward value, iptables -t nat -L POSTROUTING) to
	run before assuming apk's "DNS: transient error" is really a DNS
	problem, since a missing forwarding rule was misreported that way.
	* ResearchJournal.org: New entry.
	* VERSION, NEWS: 1.8.1 (patch: documentation clarification).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Fix: OpenRC/dudhya-sensord missing from archives since 1.6.0 (1.8.0).

	* .tar-exclude: The "dudhya-sensord" build-artefact exclusion
	pattern was unanchored, so it also matched OpenRC/dudhya-sensord
	(a real source file with the same basename, purely by naming
	coincidence). Anchored to "./dudhya-sensord". This file was
	silently absent from both the 1.6.0 and 1.7.0 archives; make dist
	was failing as a direct result (it was looking for a file that
	genuinely was not there, not hitting a build-system bug).
	* ResearchJournal.org: Two new entries --- the .tar-exclude
	investigation and fix; and a combined entry for today's other
	three items (PM8941 ADC clarification, host-to-device transfer
	docs, new external-power research item).
	* Dudhya.org: Corrected the PM8941 ADC channel description (they
	are read-only telemetry, not a power-control mechanism). Added
	"Getting the source onto the device" (make dist + scp + expand),
	previously undocumented entirely.
	* FutureResearch.org: New item --- powering candidate devices
	without their battery, for external power management.
	* SessionHandoff.org: Updated for this state.
	* VERSION, NEWS: 1.8.0 (minor: real bug fix affecting prior
	deliveries, plus new documented content).

2026-07-31  Péter Felecan  <pfelecan@gmail.com>

	Poweroff investigated to a conclusion; two doc fixes (1.7.0).

	* ResearchJournal.org: New entry concluding the multi-turn poweroff
	investigation: watchdog and lk2nd-timeout explanations both ruled
	out directly; cross-referenced against masneyb/nexus-5-upstream's
	own exhaustive component-by-component patch list (zero mentions of
	poweroff/restart anywhere) to conclude it was most likely never
	implemented for this device's mainline port at all. Not being
	pursued as a kernel fix. Also documents two related findings: the
	"must select Start" behaviour appears specific to cold boots, not
	OS-triggered restarts; and the host-side USB interface name
	changes per phone reboot, not just per host machine.
	* Dudhya.org (nexus-5): New "Power management" section documenting
	the poweroff limitation as a reference summary. Corrected the
	SSH-prerequisite section: the interface name changes per phone
	reboot; added the previously-missing "assign an IP manually"
	fallback step.
	* SessionHandoff.org: Updated for this state.
	* VERSION, NEWS: 1.7.0 (minor: new confirmed/documented findings).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	dudhya-sensord: first compiled component (1.6.0).

	* Src/dudhya-sensord.c: New. Sensor-to-MQTT daemon: reads the six
	confirmed-working Nexus 5 sensors via IIO sysfs (identified by
	probing attribute-file presence, not device number or driver
	name), converts to physical units, publishes JSON to a local
	mosquitto broker under dudhya/<device>/... topics. Config file
	(device_name, rate_hz, broker_host/port). Follows
	DevelopmentStandard.org's Hungarian-notation C style throughout
	(a first draft that didn't was caught and fully rewritten).
	* configure.ac: AC_PROG_CC and an optional PKG_CHECK_MODULES
	libmosquitto check, following the existing warn-don't-fail
	pattern for optional dependencies.
	* Makefile.am: Conditional bin_PROGRAMS for dudhya-sensord,
	gated on HAVE_MOSQUITTO; -Wall -Wextra added permanently to its
	CFLAGS (this is how a real -O2-only buffer-truncation warning and
	a genuine missing-strncpy-null-terminator bug were actually
	caught during development).
	* OpenRC/dudhya-sensord: New. OpenRC service script.
	* sensord.conf.example: New. Documented example config.
	* .tar-exclude: Added patterns for the new compiled-program build
	artefacts (the binary itself, *.o, .deps).
	* Dudhya.org (nexus-5): New "Sensor telemetry: dudhya-sensord"
	section --- topic tree reference table, on-device build and
	runtime prerequisites (verified Alpine package names), full
	deploy steps, open items.
	* README: Documented the new build prerequisite (C compiler +
	libmosquitto) with a pointer to Dudhya.org's fuller section.
	* ResearchJournal.org: New entry covering the whole design and
	implementation session --- decisions, the coding-standard
	violation caught mid-implementation, two real bugs found by
	actually compiling/testing, and end-to-end verification.
	* FutureResearch.org: Compiler-checks item resolved and removed;
	MQTT item updated to reflect the completed implementation, with
	on-device deployment as the remaining step.
	* SessionHandoff.org: Rewritten for this state.
	* VERSION, NEWS: 1.6.0 (minor: new capability, first compiled
	component).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	Sensor inventory complete (1.5.0).

	* ResearchJournal.org: New entry with full method and physical-test
	evidence for all eight investigated device paths: six confirmed
	working (apds9930 light/proximity, mpu6515 accel/gyro, bmp280
	barometer/temp, AK8963-class magnetometer), two confirmed not
	working with specific reasons (GPS: modem subsystem non-functional,
	a known upstream pmaports issue; camera: ISP not implemented).
	* Dudhya.org (nexus-5): "Known limitations" replaced with a
	confirmed "Sensor inventory" reference section (IIO device/
	attribute names for each working sensor).
	* FutureResearch.org: Sensor-verification item resolved and
	removed; MQTT broker item updated to reference the completed
	inventory.
	* SessionHandoff.org: Updated for this state.
	* VERSION, NEWS: 1.5.0 (minor: new confirmed capability).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	Architecture decided; AP mode confirmed (1.4.0).

	* ResearchJournal.org: New entry recording the post-milestone
	architecture decision (on-device MQTT broker, phone as WiFi AP
	hub), the AP-mode-supported confirmation via iw list, and two
	corrected assumptions (host interface name is host-specific; this
	unit uses sudo not doas).
	* Dudhya.org (nexus-5): New "Post-boot: internet access and
	package management" subsection --- USB-link internet access via
	host NAT, the sudo/doas correction, apk usage, and the confirmed
	AP mode finding.
	* FutureResearch.org: Added MQTT broker and WiFi AP mode (hostapd)
	as tracked next items.
	* SessionHandoff.org: Rewritten for this state.
	* VERSION, NEWS: 1.4.0 (minor: new documented capability).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	MILESTONE: Nexus 5 boots postmarketOS end-to-end, SSH works (1.3.0).

	* ResearchJournal.org: New entry recording the full success (unlock,
	OpenRC install, flashing, first boot to getty, USB networking, SSH
	login with MOTD confirmed) and a checked-and-cleared false alarm
	(lsusb mislabelling the device as "Nexus 4 (fastboot)" is a
	cosmetic ID-database artefact; dmesg confirmed the real identity
	and a correctly-registered NCM network interface). Resolves the
	systemd/USB-gadget hypothesis open since 2026-07-29: OpenRC fixed
	the boot hang.
	* Dudhya.org (nexus-5): Status updated from "blocked at first boot"
	to confirmed working end-to-end through SSH login.
	* FutureResearch.org: "Get the Nexus 5 past first boot" resolved
	and removed; replaced with sensor/telemetry verification as the
	active next item.
	* SessionHandoff.org: Rewritten for this milestone.
	* VERSION, NEWS: 1.3.0 (minor: new confirmed capability, not a fix).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	Correct --no-fde: no longer exists in current pmbootstrap (1.2.4).

	* Dudhya.org (nexus-5, step 5): current pmbootstrap has no --no-fde
	flag; no full-disk encryption is now the default, --fde the opt-in
	alternative for encryption. Found restarting the hands-on process
	on a new system. Corrected to run plain `pmbootstrap install` with
	no flag.
	* ResearchJournal.org: New entry. The 2026-07-29 session's own use
	of --no-fde was left as accurate history (it worked on that
	system's pmbootstrap version at the time); only Dudhya.org's
	forward-looking procedure needed correcting.
	* SessionHandoff.org: Updated for this session.
	* VERSION, NEWS: 1.2.4 (patch).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	Fix the Devanagari fix: font-scoping bug (1.2.3).

	* Preamble.tex: \newfontfamily defines a font-switching
	DECLARATION, not an argument-taking command --- the 1.2.1 usage
	(\devanagarifont{text}) did not scope the font switch to that
	group at all; it took effect immediately in the enclosing scope
	and leaked into every character that followed, which is exactly
	the tofu Péter reported. Added \DeclareTextFontCommand{\devanagaritext}{\devanagarifont}
	to wrap it into a properly self-scoping command.
	* Concept.org: Use \devanagaritext{...} instead of the raw
	\devanagarifont{...}.
	* Verified this time by inspecting the raw LaTeX log directly for
	"Missing character" (not just trusting the ox-latex summary line
	that caught out the 1.2.1 fix) and visually rendering the page.
	* VERSION, NEWS: 1.2.3 (patch).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	SessionHandoff.org completeness fix (1.2.2).

	* SessionHandoff.org: Added an explicit note that the 1.2.1
	session was documentation/tooling-only and that the Nexus 5
	hands-on state carried forward unchanged from 1.2.0, rather than
	leaving the document silently untouched. Péter caught that 1.2.1
	shipped with no SessionHandoff.org change and asked whether that
	was intentional; it wasn't fully --- the content was still
	accurate, but skipping the "rewritten each iteration" touch this
	document calls for was an inconsistency worth fixing rather than
	just explaining away.
	* Disambiguated a stale "today" reference (originally meaning
	2026-07-29) now that a 2026-07-30 note sits above it.
	* VERSION, NEWS: 1.2.2 (patch).

2026-07-30  Péter Felecan  <pfelecan@gmail.com>

	Minor fixes: Devanagari font support; bibliography links (1.2.1).

	* Preamble.tex: Added \devanagarifont (fontspec, Noto Sans
	Devanagari, Script=Devanagari) for proper Devanagari shaping,
	distinct from the existing newunicodechar single-glyph mappings.
	* Concept.org: Wrapped the Sanskrit/Devanagari phrase with a
	LaTeX-only export snippet applying \devanagarifont; HTML export
	unaffected.
	* ResearchJournal.org: All bibliographical references converted
	from bare URLs to followable Org links
	([[url][description]]). While reviewing the whole document to do
	this properly, found and fixed four more headings orphaned by
	earlier str_replace edits this session (same class of mistake as
	fixed on 2026-07-29), plus one dropped sentence in the
	scope-decision entry's Context section.
	* VERSION, NEWS: 1.2.1 (patch: fixes, no new documented behaviour).
	* README: Documented the new Devanagari font prerequisite for
	`make pdf`.

2026-07-29  Péter Felecan  <pfelecan@gmail.com>

	Nexus 5: unlock/install/flash confirmed; first boot blocked (1.2.0).

	* ResearchJournal.org: New entry logging the full session: what
	worked (unlock, adb-based bootloader re-entry, install, flashing
	order confirmed), what didn't (stuck at logo, no network), and the
	diagnostic trail (host USB/cable ruled out, kernel config ruled
	out via corrected kconfig check, systemd/USB-gadget hypothesis
	with sources).
	* Dudhya.org (nexus-5): Status updated to reflect confirmed steps
	vs. the current blocker; UI selection corrected to match actual
	practice (console, not none); added the OpenRC-over-systemd
	correction as the next thing to try.
	* FutureResearch.org: Nexus 5 item replaced with the specific
	current blocker and fallback plan.
	* SessionHandoff.org: Rewritten for this handoff point.
	* VERSION, NEWS: 1.2.0.

2026-07-28  Péter Felecan  <pfelecan@gmail.com>

	Scope decision recorded; Nexus 5 procedure drafted (1.1.0).

	* ResearchJournal.org: New entry recording the device scope
	decision (Nexus 5 first, Nexus 7 2013 second) and the target-OS
	decision (postmarketOS), with bibliography. Adds the
	<<scope-decision>> target that Dudhya.org's link resolves against.
	* Dudhya.org (nexus-5): New. Draft resuscitation procedure for the
	Nexus 5, sourced from the postmarketOS wiki and two GitHub
	projects; not yet physically verified.
	* FutureResearch.org: Removed the resolved "record the scope
	decision" item; added Nexus 5 verification and Nexus 7 follow-up
	items.
	* SessionHandoff.org: Rewritten for this iteration.
	* VERSION, NEWS: 1.1.0.

2026-07-28  Péter Felecan  <pfelecan@gmail.com>

	Initial project scaffold for dudhya (1.0.0). Autotools/Org-mode
	documentation toolchain adapted from a reused kit; cross-project
	references left over from an unrelated prior project removed.

	* Concept.org, Constitution.org, DevelopmentStandard.org,
	FutureResearch.org, SessionHandoff.org, Dudhya.org, Index.org: New.
	* ResearchJournal.org: New. Replaces a delivered draft that was
	entirely another project's own journal; rewritten with this
	session's actual work.
	* configure.ac: Removed C-compiler/pthread/GSL checks for tools
	that do not exist in dudhya.
	* Makefile.am: Removed comparisons to a named sibling project;
	dropped the reference to the not-yet-supplied man2htmldoc tool
	from EXTRA_DIST; corrected the rendered-document list to include
	Dudhya.org.
	* Index.org: Title corrected (named another project).
	* .tar-exclude: Archive-name exclusion pattern corrected; a stale
	subdirectory path in a comment corrected.
	* make-archive: Comment referencing another project's directory
	generalised.
	* Preamble.tex: Added a provenance note for inherited
	"Iteration N.N.N" comments, matching batch-init.el's existing
	framing.
	* NEWS: New. Replaces a delivered draft that was entirely another
	project's own release history.
	* bootstrap, AUTHORS, VERSION, batch-init.el, version.org.in:
	No changes; already correct for dudhya.
	* COPYING: New. Verbatim GNU GPLv3 text.
	* README: New.
