DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path current-status/current-status-manifest-v0_44.html
DUNIN7 · Loomworks · Current-Status Manifest

Loomworks Current-Status Manifest — v0.44

Version: 0.44
Date: 2026-05-29
Status: Working draft. Adds Entry 106 (source identification shipped and merged to main on both code repositories; CR-2026-094) and otherwise carries v0.43 forward unchanged.
Purpose: To serve as a fresh chat's first orientation. The manifest is a current-status record, not a foundation. The foundation is what-dunin7-is-building-v0_20.md (2026-05-02). The manifest sits above it.
Scope of absorption: v0.42 spans 13 days of accumulated state (2026-05-12 to 2026-05-25) — substantially more than the per-phase absorption cadence v0.31 through v0.41 used. See §1.D for the cadence shift and §2 for the consolidation-surface shift.

How to read this manifest

Before treating any document in project knowledge as authoritative, check this manifest first. Project knowledge may contain superseded framings, deferred-or-since-shipped predictions, or pre-cleanup-arc references. The manifest reflects current state.

Cross-document hierarchy. The architecture specification (architecture/loomworks-architecture-specification-v0_4.html) is the structural source. The methodology canon (operations/loomworks-methodology-canon-v0_1.html) is the methodology source. The development assessment (substrate/where-we-are-in-loomworks-development-assessment-v0_1.html) frames the Phase A/B/C horizons. The manifest cross-references all three rather than re-stating their content.

The manifest is the absorption layer; the methodology document is the consolidation layer. This separation from v0.41 holds — with one substantive structural shift. A separate consolidation surface emerged between v0.41 and v0.42: the methodology canon in operations/. The relationship between the canon and the anticipated what-dunin7-is-building v0.21 consolidation is an open question (see §3 below).

Repos. Three code repos plus marketing, all under DUNIN7/ on GitHub:

The record repo is DUNIN7/loomworks-record, served at record.dunin7.com via Cloudflare Pages.


Section 1 — Current document authority

Repo names

Unchanged from v0.41. Three code repos plus marketing, all under DUNIN7/. Path conventions as above.

Methodology document

Updated for v0.42 (structural shift). v0.41 named the methodology v0.21 consolidation as outstanding, with the backlog "compounding noticeably." v0.42 absorbs an additional body of methodology contributions from the cleanup arc — but four of those have already been canonized at operations/loomworks-methodology-canon-v0_1, bypassing the v0.21 path entirely.

The structural shift: methodology consolidation now happens on two surfaces:

The relationship between the two surfaces is an open question for the Operator to resolve when v0.21 is undertaken. Possibilities: v0.21 absorbs the canon by reference; v0.21 absorbs only what the canon hasn't taken; the canon eventually replaces the v0.21 consolidation cadence; they coexist permanently on different cadences. v0.42 records the question but does not resolve it.

The other accumulated candidates (Phase 49/50/51/52/53/54/55/56 build findings, plus the candidates surfaced during the cleanup arc that didn't reach canon threshold) remain v0.21 lift candidates.

Loomworks engagement seed

Carried forward at v0.9 with deferral framing flagged as stale. v0.41 said "defer the seed bump and revisit at manifest consolidation pace." v0.42 reassesses: the cleanup arc + the methodology canon + v0.4 of the architecture spec are framing shifts (FORAY as external service; reserved-emit pattern; substrate cleanup as a meta-shape), not incremental vocabulary additions. A v0.10 seed bump is now warranted to capture the cleanup-arc framing shifts. v0.42 names this as a candidate piece of work; does not produce the bump.

Loomworks engagement state

Updated for v0.42. Engagement assertions accumulated through Phase 56 (E0001's Memory holds the build-up through "voice work discipline"); the cleanup arc's three CRs added implicit Memory state through the architecture spec v0.4 and methodology canon landings, but no engagement-level assertions for the cleanup arc itself were contributed. v0.42 notes this as a candidate Operator action — contribute assertions to E0001 capturing the cleanup arc's framing shifts.

Substrate state

Updated for v0.42 (substantial).

Engine: 2,708 tests collected / 2,673 passed at HEAD 573abe1 (cleanup arc closure). Up from 2,279 at v0.41 (+394 tests over the absorption interval). 33 skipped (calibration-gated and conditional tests). 2 pre-existing failures throughout (filed across Phase 61/62/63 implementation notes as future-ledger items; see §1.E):

Alembic head: 0073_credit_flows_cleanup (was 0064 at v0.41). Nine migrations consumed since v0.41 — the first time the manifest history breaks the typed-MemoryObject-without-migration streak (the streak was at seven consecutive phases at v0.41). The cleanup arc consumed three of the nine migrations (0071, 0072, 0073).

Substrate shape after the cleanup arc (replacing the three FORAY-shaped tables v0.41-era substrate carried):

New engine module: src/loomworks/foray/ with three files: __init__.py (re-exports), reserved_emit.py (no-op emitter), anchor_priority.py (19-entry registry). Sixteen reserved-location call sites across the engine: 3 audit + 1 memory + 12 credit. All carry # FORAY_RESERVED_LOCATION: <namespace>.<event_kind> grep markers.

Frontend state — Workshop (loomworks-ui): Unchanged from v0.41. HEAD remains at 7f35825 (2026-05-06, Phase 45 step 14). 282 vitest (29 files); eslint 0 errors / 1 pre-existing warning; tsc/build clean. Workshop is intentionally frozen at the Phase 45 four-room engine-internals shape. This is positioning, not neglect — active product development happens on the Operator Layer. The architecture spec v0.4 §10 makes this explicit; v0.42 inherits the framing.

Frontend state — Operator Layer (loomworks): Updated for v0.42 (substantial). HEAD at 054b0c2 (2026-05-20, voice-listening-silence-submit). Upload pathway operator-reachable end-to-end as of 2026-05-27 (OL 2186d13, untagged); engine writes UploadEventReceived events with provenance; assertion-drafting unbuilt (queued-directions v0.21 §15.3). Phase 60 itself is Companion-as-Operator-system-interface, closed mid-May (see Entry 101 correction). Voice modality matured substantially: silence-submit threshold (Companion-tunable, default 2.5s), recognizer E-prefix expansion, voice-provenance marker via input_mode on conversation_turns, voice-pill padding, in-engagement voice listening surface. Brass microphone glyph on voice-origin turns.

Marketing repo (loomworks-marketing): Updated for v0.42. HEAD at 0d86610 (2026-05-17, "Fix four-stage phrasing on home — Memory, Manifestation, Shaping, Rendering"). This commit appears to address one of v0.41's three held marketing-site content observations (the room-order rendering issue). Status of the other two observations — "Manifestation paired with 'ships into the world'" and "broader frame-level question about substrate vocabulary outward" — awaits Operator confirmation.

Phase CRs and tags

Updated for v0.42 (substantial). Tag history since v0.41 (chronological):

DateTagTypeWhat

|---|---|---|---|

2026-05-14phase-58-upload-pathwayNumbered phaseUpload pathway substrate
2026-05-15phase-59-upload-pathway-completionNumbered phaseUpload pathway completion
2026-05-18voice-listening-v0_1Named shipVoice listening §A + §B (preference store + Companion tune_setting)
2026-05-19sign-out-v0_1Named shipPOST /auth/logout endpoint
2026-05-19in-engagement-surface-fill-in-v0_1Named shipConversation-history 404 fix
2026-05-19engagement-list-scoping-v0_1Named shipGET /engagements scoped to caller's memberships
2026-05-19composer-placement-and-message-order-v0_1Named shipComposer placement + message_order
2026-05-19foray-audit-for-settings-v0_1Named shipThe audit substrate later renamed by CR-A
2026-05-19voice-tryprompts-to-tooltip-v0_1Named shipVoice try-prompts → tooltip (bundled commit)
2026-05-19top-bar-cleanup-v0_1 through _v0_3Named ships (×3)Three tags on same substrate commit
2026-05-20voice-pill-padding-engagement-navigation-v0_1Named shipVoice pill padding (bundled with voice-provenance)
2026-05-20voice-provenance-v0_1Named shipinput_mode column on conversation_turns
2026-05-20voice-recognizer-e-prefix-v0_1Named shipVoice recognizer E-prefix expansion
2026-05-20voice-listening-silence-submit-v0_1Named shipVoice listening silence-submit
2026-05-24phase-61-audit-cleanupNumbered phase (CR-A)Substrate hygiene cleanup arc, first sibling
2026-05-24phase-62-memory-events-cleanupNumbered phase (CR-B)Substrate hygiene cleanup arc, second sibling
2026-05-25phase-63-credit-substrate-cleanupNumbered phase (CR-C)Substrate hygiene cleanup arc, third sibling; closes Phase A

Phase 57: no engine tag. Identifier was reassigned mid-flight. Local branch phase-57-marketing-engagement-creation exists on engine and Operator Layer but never produced a tag.

Phase 60: no engine tag. Phase 60 is Companion-as-Operator-system-interface, closed mid-May on the Operator Layer at tags phase-60-close-v0_1 (835936b, 2026-05-16) and phase-60-recovery-v0_1 (7868851, 2026-05-16); no engine tag because Phase 60 was Operator-Layer-only. The phase-60-operator-layer-upload-pathway-v1 branch name that v0.42 read as "in flight" was separate, mislabeled work — upload-pathway-v1 — and is now deleted from refs; the actual upload-pathway landing is untagged at OL 2186d13 (2026-05-27). See Entry 101 correction and §15.3 for the remaining engine-side upload work (assertion-drafting from UploadEventReceived).

Investigation documents

Updated for v0.42. New investigations and substrate documents in the record since v0.41:

Phase 58 implementation notes

New for v0.42. Upload pathway substrate. Engine repo 2a6a753. (Not landed as separate implementation notes in the record at this manifest's authoring; consider whether to lift if the Operator wants the trajectory persisted.)

Phase 59 implementation notes

New for v0.42. Upload pathway completion (CR-2026-092 v0.4). Engine side. (Same posture as Phase 58 notes.)

Phase 60 implementation notes

Not in the record at this version. Phase 60 (Companion-as-Operator-system-interface) closed mid-May without producing a record-resident implementation-notes artifact; the tune_setting handler is the first shipped instance per §2.B. Any implementation-notes write-up is identified-but-not-actioned work, alongside the broader numbering-reconciliation pass named in §5. See Entry 101 correction.

Phase 61 implementation notes

New for v0.42. phase-61-implementation-notes-v0_1.{md,html} at substrate/cleanup/. Captures the CR-A close: audit.foray_eventsaudit.events; foundation module src/loomworks/foray/ established with _foray_reserved_emit no-op; 3 reserved-emit call sites; reserved slot 1 of 2 consumed (FK deviation — orphan-row protection cost exceeded benefit given Loomworks' deletion semantics). Validates the per-call-site reserved emit pattern.

Phase 62 implementation notes

New for v0.42. phase-62-implementation-notes-v0_1.{md,html} at substrate/cleanup/. Captures the CR-B close: memory_events Phase 25 wiring cleanup. The attestation column renamed to commit_webauthn_attestation as a true Alembic rename (1 existing non-null row carrying real WebAuthn proof preserved). _ANCHOR_PRIORITY registry relocated to src/loomworks/foray/anchor_priority.py. Both reserved slots consumed (test scope expansion finding + raw-SQL INSERT helper discovery — informs canon Principle 4).

Phase 63 implementation notes

New for v0.42; closes the cleanup arc. phase-63-implementation-notes-v0_1.{md,html} at substrate/cleanup/. Captures the CR-C close: credit.foray_action_flowscredit.flows via in-place RENAME. Trigger continuity verified empirically (synthetic-INSERT test confirmed the trigger fires on the renamed table; the update_balance_on_flow trigger binds to table OID and follows the rename transparently). 12 reserved-emit call sites — validates the per-call-site discipline at scale. 9-value typed event_kind taxonomy added with legacy_unknown fallback.

Methodology canon v0.1 — new in record

New for v0.42. operations/loomworks-methodology-canon-v0_1.{md,html} (commit de23c31). The standing canon of methodology principles earned through execution evidence. Four principles in v0.1 (see §2.A below). Discovery-trajectory discipline applies — v0.2/v0.3 will land alongside v0.1 when consolidation continues.

Architecture specification v0.4 — new in record

New for v0.42. architecture/loomworks-architecture-specification-v0_4.{md,html} (commit 7da12f1). v0.3 preserved untouched at architecture/loomworks-architecture-specification-v0_3.html per discovery-trajectory discipline. v0.4 absorbs four substantive sets of changes since v0.3: FORAY reframing (load-bearing), methodology canon integration, voice modality maturation, Workshop framing made explicit. Authoritative for current architectural framing.

Record-production-discipline note — new in record

New for v0.42. operations/record-production-discipline-v0_1.{md,html} (commit 73e947a, 2026-05-24). Establishes the direct-to-record production discipline: documents with discovery-record value land in the record automatically as part of producing them, not as a separate later step. Path A (Claude.ai → Downloads → Claude Code, for substantive new artifacts) and Path B (in-record editor at record.dunin7.com, for small edits) named. The Downloads-as-staging step retired for record-bound documents.

Session handoff

Updated for v0.42. The closing artifact of the substrate hygiene cleanup arc is the Phase 63 implementation notes at substrate/cleanup/phase-63-implementation-notes-v0_1.{md,html}. No standalone session handoff at v0.42; the cleanup arc's trajectory is preserved across the 14 documents in substrate/cleanup/.


Section 2 — Named principles and patterns

2.A Promotions to methodology canon v0.1

Four principles were lifted to canonical status at the cleanup arc's close (record commit de23c31). v0.42 records the promotions; the canon at operations/loomworks-methodology-canon-v0_1.html carries the authoritative statements, evidence bases, and boundary conditions. Brief summaries:

  1. Per-call-site reserved emit. When a code path is being prepared for future external integration, the reserved-location marker lives at each business-event site, not centralized in helper writers. Evidence: 3 / 1 / 12 sites across CR-A / CR-B / CR-C.
  1. Test-filename-to-current-substrate alignment. When a test's filename framing references a cleaned-up origin, rename to reflect current substrate or delete if functionality is gone. Four-instance evidence including a negative case at CR-C (zero renames needed because filenames were already accurate — validates the principle in its negative form).
  1. Migration strategy: rename when downstream bindings exist; recreate when independent. Choose by what binds, not by default preference. Evidence: CR-A drop-and-recreate (no bindings), CR-B column rename (ORM bindings followed), CR-C table rename (trigger and FK followed via table OID).
  1. Inventory enumeration vs cognitive density. Inventories enumerate references but undercount cognitive density per reference. Design steps should grep for assertion patterns and reader sites directly; per-test-function enumeration is more reliable than per-file enumeration. Evidence: CR-B's slot-1 finding (10 incidental files actually contained 4 directly-testing functions plus raw-SQL helpers), CR-C's per-file density finding (21 + 29 + 17 references in three files).

2.B New in v0.42 — from the cleanup arc

Substrate-friction-discipline-pattern (already named in v0.41 / earlier): the cleanup arc exercised this pattern across three sibling CRs. Reserved slots consumed cleanly within budget. The pattern continues to hold operationally.

Halt-and-surface beats absorb-silently (named; not yet canonized): every CR in the cleanup arc honored the Checkpoint A halt before merge. CR-B's slot 1 surfaced execution-time discoveries (4 additional test functions + raw-SQL INSERT helper); CR-C's slot 1 surfaced 4 more execution-time discoveries (multi-line JSONB predicate, UUID/str type comparison, two missed raw-SQL queries, mangled import). All surfaced cleanly through the halt-and-surface discipline rather than absorbed in CR execution.

Direct-to-record production discipline (now established as standing discipline): see operations/record-production-discipline-v0_1. The Downloads-as-staging step retired for record-bound documents. Documents land in the record automatically as part of producing them.

HTML-companion-as-part-of-producing-the-document discipline: every record document has both .md and .html with Loomworks letterpress styling. Established mid-session (commit 73e947a).

2.C Sharpening of existing principles — from the cleanup arc

Seam-and-stub progression sharpened to "reserved-location pattern." v0.41's framing of OVA integration via seam-and-stub generalized: the cleanup arc applied the same pattern at 16 sites for FORAY integration, with _foray_reserved_emit("<namespace>.<event_kind>", payload) calls at each call site plus # FORAY_RESERVED_LOCATION grep markers. The pattern is now Loomworks-wide; v0.4 of the architecture spec §09 carries the framing.

Discovery-record posture validated at scale. The cleanup arc's complete trajectory — scoping note v0.1 → inventory → scoping note v0.2 → three CR designs → three CR drafts → three implementation notes → methodology canon v0.1 → architecture spec v0.4 — lives in the record as a connected discovery sequence. Anyone reading the section indexes can follow the trajectory end-to-end. This is the strongest validation of the posture to date.

Companion-as-Operator-system-interface principle (post-Phase 60; named). The Companion is the primary surface for all Operator-system interaction including preferences, configuration, and policy — not just conversational work. Phase 60's tune_setting handler is the first instance. Listed in v0.4 architecture spec §12 as operative discipline; v0.42 records it here for absorption.

2.D Methodology candidates awaiting framing (v0.21 consolidation candidates)

Carried forward from v0.41 (still pending v0.21 consolidation pass):

New for v0.42 (cleanup-arc candidates that didn't reach canon threshold):

Structural shift in v0.42: The v0.21 path is no longer the only lift surface. Principles that earn three-instance evidence in a single arc may land in the methodology canon directly (consolidation-after-arc cadence). The relationship between the v0.21 path and the canon is an open question (see §1 above). Candidates listed here may, by the time of v0.21 consolidation, have been canonized via a different path.


Section 3 — Entries

Numbered phase entries follow the v0.41 convention: Provenance / Content / build summary / methodology contributions / trajectory / build-quantitative summary.

Earlier entries (Entry 1 through Entry 98 / Phase 56) carry forward by reference from v0.41 and prior manifests. v0.42 adds Entries 99 through 104.

Provenance. Tagged phase-58-upload-pathway on engine 2026-05-14. Substrate-only.

Content. Upload pathway substrate established. Foundational work for the in-engagement upload surface.

Trajectory worth recording. Phase 58 shipped before Phase 57 (Phase 57 was a reassigned identifier; see Entry 99-A note). Upload pathway became the natural next surface after the engagement-creation arc closed at Phase 56.

Build-quantitative summary. Substrate-only at Phase 58 close. Operator Layer surface-reachability landed separately, untagged, at OL 2186d13 (2026-05-27, /chat?project=<id> restoration); the in-engagement-composer upload-port (item 3, Shape 2) is identified-but-not-done. Phase identifier for the OL upload-pathway work is unreconciled (§5); this is not Phase 60's work (see Entry 101 correction).

v0.41 anticipated Phase 57 as "Phase 32 marketing engagement" (strongest candidate), with alternates Option C (Discovery render specialists) and explain-affordance investigation. Reality: Phase 57 identifier was reassigned mid-flight. A phase-57-marketing-engagement-creation branch exists on engine and Operator Layer but never produced a tag. v0.42 records the prediction-vs-reality gap honestly — not because v0.41's selection criteria were wrong, but because the actual selection criteria turned out to be different (see §4 below for completion plan honesty).

Provenance. Tagged phase-59-upload-pathway-completion on engine 2026-05-15. CR-2026-092 v0.4.

Content. Upload pathway completion on the engine side. The substrate is operationally complete; the Operator Layer surface-reachability landed separately at OL 2186d13 (2026-05-27, untagged), and is not Phase 60's work — Phase 60 is Companion-as-Operator-system-interface (see Entry 101 correction). The in-engagement-composer upload-port remains identified-but-not-done as item 3 (scoping note at change-requests/loomworks-composer-upload-port-scoping-note-v0_1).

Build-quantitative summary. Engine side complete. OL upload-surface reachability landed separately at 2186d13 (2026-05-27, untagged); the in-engagement-composer upload-port (item 3, Shape 2) remains identified-but-not-done. Phase identifier for the OL upload-pathway work is unreconciled (§5).

Correction note. v0.42 and earlier labeled Entry 101 "Phase 60: Upload pathway v1 (in flight)." That label was wrong. It keyed off the Operator Layer branch name phase-60-operator-layer-upload-pathway-v1, which is now deleted from refs and never produced a tag. Phase 60 in the record's canonical phases/ taxonomy is phase-60-companion-as-operator-system-interface, and this same manifest's §2.B already names Phase 60's first instance as the tune_setting handler — a Companion-as-interface deliverable, not upload work. The label is corrected here; the prior position is preserved in this note per corrections-preserved discipline.

Provenance. Operator Layer tags phase-60-close-v0_1 (835936b, 2026-05-16) and phase-60-recovery-v0_1 (7868851, 2026-05-16). No engine tag.

Content. Phase 60 is the Companion-as-Operator-system-interface work: the Companion as the primary surface for Operator-system interaction (preferences, configuration, policy), not only conversational work. The tune_setting handler is the first shipped instance. Closed mid-May.

The upload-pathway work that wore the Phase 60 branch name — landing identifier unresolved. Separate from Phase 60. The upload pathway is operator-reachable end-to-end as of 2026-05-27, restored at Operator Layer commit 2186d13 (the /chat?project=<id> route restoration), which is untagged. The engine writes UploadEventReceived Memory events with full provenance (verified 2026-05-28). The remaining engine-side gap — drafting held Assertions from those events — is tracked as queued-directions v0.21 §15.3. Which phase identifier this OL work belongs under is unreconciled; see Section 5.

Content. A four-item session (plus one promoted item). Items closed: configuration-drift remediation (engine b793aef, 427c446.env.example reference checked in, RP-origin test decoupled) and the test-override audit (engine d5d57ee — two missed upload-test fixtures brought to the production session envelope; eight upload-test fixtures now uniform; conftest divergence recorded as load-bearing-by-design). Filed: queued-directions v0.21 §15.3 (upload content does not reach assertion grain; plus two independently-timed documentation corrections). In progress: item 3, file upload through the in-engagement composer — Shape 2 (shared upload hook) chosen; scoping note at change-requests/loomworks-composer-upload-port-scoping-note-v0_1 (.md/.html). Deferred: §13.3 Operator real-passkey registration (unsequenced).

Active work resumes at. Item 3's Change Request — the next artifact — beginning with the cross-layer-seam decision (composer upload direct-to-engine via existing postUpload, vs. an Operator Layer gateway route). See the scoping note's open question 1.

Detail lives in. Queued-directions v0.21 §15.3; the composer-upload-port scoping note v0.1; session handoff 2026-05-28 evening v0.1. This entry is a pointer, not a restatement.

What landed. Source identification — the first build on the Memory-completion path — shipped and merged to main on both code repositories. The work unifies conversation-turn provenance onto the existing ActorRef model, so conversation turns now record source the same honest, provenance-grounded way assertions always have, and the Operator Layer surface labels turns by their true source.

Governing document. Change Request CR-2026-094, document version 0.2, filed at change-requests/loomworks-source-identification-cr-v0_2.md (version 0.1 preserved alongside per the corrections-preserved discipline). Executes source-identification scoping note version 0.2 (decisions D1 through D5).

The capability, in plain terms.

  • Conversation turns carry the acting source — actor identity, actor kind, instruction version, and display name — alongside the existing role. Role describes the turn's conversational position; the actor record describes its source. Conflating the two was the original defect.
  • The Companion's turns now carry their own companion source-kind, rather than being written under the Operator's identity and distinguished only by a role string.
  • The surface labels the four source-kinds honestly: Operator, Contributor, Domain Expert, and the Companion. A Contributor's turn now renders as "(Contributor)", not "(Operator)" — the long-standing mislabel defect is closed, and was proven closed against the live running stack with a real authenticated session, not only in the test suite.
  • The Domain Expert marker is additive: a person who is both an operator and a domain expert renders as "{name} (Operator · Domain Expert)", so recognized expertise stays visible rather than being suppressed under a base role. This was an amendment adopted during the build (the Change Request version 0.1 had it suppressed under a single-value precedence; version 0.2 makes it additive — truer to the recognition intent and to the moat).
  • The designation that drives the label resolves at read time (a join keyed by person and engagement, one query per read, not per turn), so the label reflects the person's current standing rather than a value frozen onto a past turn.
  • The FORAY reserved-location seam is now present on the conversation-turn write path, mirroring the assertion path's seam. Both Memory-population paths are now seam-marked — the "every contribution is attestable" claim holds across both, with no FORAY dependency wired (seam-marked only, per the Change Request's chosen depth).

Merged state (current baseline).

  • Engine: main at daee809; alembic head 0074 (0074_source_identification_actor_columns.py, the migration adding the four nullable actor columns to conversation_turns). Tag source-identification-v0_1 (annotated) at daee809.
  • Operator Layer: main at 1ce2542. Tag source-identification-v0_1 (annotated) at 1ce2542.
  • Both fast-forward merges, no merge commits. The source-identification branches are left in place on both repositories as the named record (not deleted).

Baseline reconciliation (note, not a correction to earlier entries). Version 0.43 recorded the engine baseline as 573abe1. That figure is truthful-but-behind: 573abe1 (the Phase 63 credit-substrate-cleanup merge) is a clean ancestor of d5d57ee (the pre-source-identification main, three commits ahead — the 2026-05-28 cleanup arc Entry 105 records), which is in turn the parent line of the merged daee809. So the lineage is 573abe1d5d57eedaee809. The current engine main baseline is daee809 (alembic 0074). Earlier entries' 573abe1 lines are left as written; this entry states the current figure.

Acceptance. Engine suite 2687 passed / 2 pre-existing failures (unchanged by identity) / 0 errors; the migration applies and reverses cleanly. Operator Layer suite 412 passed; typecheck and lint at baseline. Live authenticated check against the running stack confirmed each source-kind renders its honest label end to end, including the additive Domain Expert marker and the Contributor-not-Operator fix. The conversation-turn path was treated as a Memory write path throughout — tested against production-session behaviour, not a green suite alone (the lesson from the upload-pathway arc, where a green suite masked a broken production path).

Tracked follow-ups (recorded, not blocking).

  • Two pre-existing engine baseline failures on the main line, unrelated to this work and carried as a pinned accepted baseline through the build: tests/test_api_assertion_retract.py::test_api_assertion_retract (whitespace-only rationale validation) and tests/test_phase_44_evaluator.py::test_concern_scan_does_not_re_fire_within_dedup_window (dedup-window re-fire). Real, deterministic, worth their own errand.
  • The conftest sequence-reset gap: the per-test TRUNCATE … RESTART IDENTITY does not reset engagement_display_identifier_seq (a standalone sequence used in a column default, not identity-owned), so the engine test baseline requires a manual ALTER SEQUENCE … RESTART before a clean run. Recorded during this build; not fixed here.

Position on the path. Source identification was step one of the Memory-completion path. The named next step is the four-room credit spend-gate (the major build that meters and gates the Memory → Manifestation → Shaping → Rendering pipeline before it is surfaced) — a horizon, not started. The branch merges close the development-database-ahead-of-main gap: engine main now carries migration 0074, so the next step can start from main with schema and code in agreement.

Provenance. Tagged phase-61-audit-cleanup on engine 2026-05-24. Merge commit 616bab9. First of three sibling CRs from substrate hygiene scoping note v0.2.

Content. audit.foray_eventsaudit.events. Established the src/loomworks/foray/ module foundation with the _foray_reserved_emit no-op emitter. Validated the per-call-site reserved emit pattern at 3 sites in the audit substrate.

Five methodology contributions for absorption:

  1. Per-call-site reserved emit validated (3 sites). Three near-identical 4-line emit blocks at three call sites were not awkward; preserved the business-event-vs-persistence distinction visibly. (Lifted to canon Principle 1 at the arc's close.)
  2. Test-filename-to-current-substrate alignment first application. Renamed test_voice_tune_setting_foray_audit.pytest_voice_tune_setting_audit.py. (Lifted to canon Principle 2.)
  3. Migration strategy: drop-and-recreate when no downstream bindings. audit.foray_events had no triggers, no FKs from other tables, no downstream readers. Drop-and-recreate worked cleanly. (Lifted to canon Principle 3.)
  4. Reserved-slot consumption: one slot for FK deviation (Decision 5 in the design). ORM-level FK declarations entangled the audit DeclarativeBase with persons metadata; dropping FKs from both ORM and DB was the right call given Loomworks' invariant that persons and engagements are never deleted.
  5. Halt-and-surface discipline at Checkpoint A worked cleanly; no merge without explicit Operator approval.

Trajectory worth recording. CR-A validated the reserved-location pattern at the smallest scope. The pattern then scaled cleanly through CR-B (1 site) and CR-C (12 sites).

Build-quantitative summary. ~2 hours CC execution time (under 4.5-6h estimate). Test count 2708 baseline → 2674 passed / 33 skipped / 2 pre-existing failures.

Provenance. Tagged phase-62-memory-events-cleanup on engine 2026-05-24. Merge commit ead29a8. Second of three sibling CRs.

Content. Phase 25 readiness wiring on memory_events cleaned. The attestation column renamed to commit_webauthn_attestation as a true Alembic rename (preserving 1 existing non-null row carrying real WebAuthn proof). _ANCHOR_PRIORITY registry (19 entries) relocated from src/loomworks/memory/events.py to src/loomworks/foray/anchor_priority.py. The _foray namespace injection logic at events.py:209-220 removed. compute_content_hash function removed entirely (zero callers after column drop). content_hash and foray_tx_ref columns dropped.

Five methodology contributions for absorption:

  1. Per-call-site reserved emit scales both directions (1 site for CR-B vs 3 for CR-A). The pattern holds at fewer sites; the principle is "one emit per business event" not "centralize at the helper writer."
  2. Migration strategy: column rename when ORM bindings exist. True rename via op.alter_column(... new_column_name=...) preserved the WebAuthn row through the migration; round-trip verified.
  3. Reserved slot 1 consumed by test scope expansion finding — inventory said "10 incidental references"; execution found 4 additional phase-specific tests with test_foray_namespace_injected-style functions, 4 _ANCHOR_PRIORITY import sites, and 3 compute_content_hash import removals. (Lifted to canon Principle 4.)
  4. Reserved slot 2 consumed by raw-SQL INSERT helper findingtest_phase_48_reconciliation_evaluator.py:128 had a raw-SQL INSERT helper writing content_hash. Production paths were clean; test helpers bypass the ORM "single code path" claim from docstrings. (Reinforces canon Principle 4.)
  5. Test-filename-to-current-substrate alignment validated at second instance. Deleted test_phase_25_content_hash_and_foray.py entirely; renamed test_phase_25_commit_attestation.pytest_commit_webauthn_attestation.py. Three test functions deleted across three other phase test files. Validates the rename-or-delete distinction.

Trajectory worth recording. CR-B was the load-bearing safety operation of the arc — the 1 non-null attestation row had to survive the rename. Empirical verification: pre-migration query showed event_id 0673cfd7-354b-4e2a-8a33-9d7355ebf180's data; post-migration query under the new column name showed the same data, byte-for-byte. Round-trip preserved.

Build-quantitative summary. ~2.5 hours CC execution time (toward lower end of 3-5h estimate). Test count 2708 baseline → 2670 passed / 33 skipped / 2 pre-existing failures.

Provenance. Tagged phase-63-credit-substrate-cleanup on engine 2026-05-25. Merge commit 573abe1. Third of three sibling CRs. Closes the substrate hygiene cleanup arc and Phase A of the development assessment.

Content. credit.foray_action_flowscredit.flows via in-place RENAME (preserving trigger + FK + indexes transparently). 9-value typed event_kind taxonomy added with legacy_unknown fallback for historical rows that don't fit the 9 patterns. Two new typed columns (turn_event_id, converted_person_id) replace JSONB-extract reader queries. Three downstream readers refactored to typed-column predicates (conversion observer, reconciliation evaluator, inline idempotency check inside write_referral_credit_flow). 12 reserved-emit call sites added across flows.py (11) and proposal_applier.py (1). metadataextra_metadata rename retires SQLAlchemy reserved-name workaround.

Five methodology contributions for absorption:

  1. Per-call-site reserved emit at scale (12 sites). The pattern is now validated across the full range Loomworks encounters: 1 → 3 → 12 sites. (Strengthens canon Principle 1.)
  2. Migration strategy: in-place RENAME when triggers and FKs bind. The credit.update_balance_on_flow trigger binds to table OID and follows ALTER TABLE ... RENAME transparently. Empirically verified — synthetic INSERT on the renamed table fires the trigger and produces the expected double-entry balance updates. (Strengthens canon Principle 3.)
  3. Inventory cognitive density per file (21 + 29 + 17 references in three test files). The 8-file inventory count was right; the per-file density was the finding. (Reinforces canon Principle 4 in a new direction — file-count accurate, cognitive density underestimated.)
  4. Test-filename-to-current-substrate alignment at fourth instance — negative case. Zero renames in CR-C because the credit test files (test_phase_47_credit_substrate.py, etc.) were named after their phase-origin rather than after the FORAY framing. The principle correctly predicted "no renames needed." (Validates canon Principle 2 in its negative form.)
  5. Three readers, not two. Inventory said 2 downstream readers; CC's design step found 3 (the inline idempotency check inside write_referral_credit_flow was the third). The design-time grep caught what the inventory missed — the principle works.

Trajectory worth recording. The PostgreSQL trigger was framed as "the main unknown going in" in the kickoff. In execution, the trigger turned out to be the smoothest piece — it binds to table OID, follows the rename, requires no DDL change. CR-C's load-bearing risk surface was the test-density work, not the trigger. The cleanup arc's overall finding: the highest-cost work was substantively cheaper than anticipated; the lowest-cost work (test sweep) absorbed the reserved-slot budget.

Build-quantitative summary. ~5 hours CC execution time (middle of 4-7h estimate). Test count 2708 collected → 2673 passed / 33 skipped / 2 pre-existing failures. Five commits on phase-63-credit-substrate-cleanup branch. Phase A complete.


Section 4 — Residues

4.A Carryover from v0.41

Methodology v0.21 consolidation outstanding. Pressure was named in v0.41 as "compounding noticeably." v0.42 absorbs the consolidation-surface shift (canon emerged) but the v0.21 path remains an open arc — the candidates listed in §2.D carry forward.

Phase 45 OVA-spec scope sharpening. Carried from v0.41. OVA remains parked (Kaspa vProgs not ready).

"Skills" terminology three-way distinction unsettled. Carried.

Cross-Operator stewardship of promoted fragments. Carried as open question.

Operator content authoring. Soft deadline before alpha exhaustion. Carried.

Voice tuning iterations ongoing. Updated for v0.42: substantial voice work shipped (14 ships across the absorption interval — silence-submit threshold, recognizer E-prefix expansion, voice provenance, voice-pill padding). The iteration cadence is operationally healthy; the underlying "voice tuning ongoing" framing carries forward as accurate.

Engineering capacity decision trigger. Carried as watch-this.

Engine deployment via M4 tunnel. Phase 52 gate 7 deferred until deployment. Carried.

Marketing-site content observations held — three items. Updated for v0.42. Marketing repo commit 0d86610 (2026-05-17, "Fix four-stage phrasing on home — Memory, Manifestation, Shaping, Rendering") appears to address the room-order rendering observation. Status of the other two — "Manifestation paired with 'ships into the world'" and "broader frame-level question about substrate vocabulary outward" — awaits Operator confirmation. v0.42 records one item likely-resolved and two items unverified.

phase-56-step-0 local branch. Step 0 branch lifecycle decision pending. Carried.

**7 stale origin/phase-* refs on engine origin.** Carried. Increased by 2 local non-main branches on engine (phase-57-marketing-engagement-creation, phase-58-upload-pathway) per CC's grounding observation. Engine's full stale-branch state: 2 local + 7 remote.

4.B Closures from v0.41

Substrate hygiene cleanup arc (Phase A of the development assessment) — closed across Phases 61-63. Three FORAY-shaped substrate surfaces replaced with Loomworks-native equivalents. Reserved-location pattern in place at 16 call sites. src/loomworks/foray/ module foundation established. Phase A is genuinely complete.

The "Phase 57 strongest candidate Phase 32 marketing engagement" prediction. Closed without execution — Phase 57 identifier got reassigned; the marketing engagement work did not become Phase 57; the cleanup arc emerged as a different selection. v0.42 records the prediction-vs-reality gap honestly (see Entry 99-A and §3 below).

The "FORAY substrate operating" framing. Closed by the cleanup arc. FORAY is now correctly framed as an external service Loomworks will call. v0.41's incidental FORAY-substrate mentions are superseded. Architecture spec v0.4 §09 carries the authoritative current framing.

4.C New in v0.42

The methodology canon emerged as a separate consolidation surface. Four principles canonized at operations/loomworks-methodology-canon-v0_1 through a consolidation-after-arc cadence. This is a structural shift from v0.41's anticipation that all methodology consolidation would happen via the v0.21 path. Both surfaces now coexist; relationship to v0.21 is an open question.

Phase numbering became less canonical. Numbered phases continue (58, 59, 61, 62, 63) but the universe of "how work lands" expanded: named ships (14 across 2026-05-18 through 2026-05-20), sibling CRs within an arc (61, 62, 63 as the cleanup arc), in-flight Operator Layer work without engine tags (60). v0.42 names this explicitly as a structural shift.

Direct-to-record production became the standing discipline. The Downloads-as-staging step retired for record-bound documents. Documents land in the record as part of producing them. See operations/record-production-discipline-v0_1.

HTML-companion-as-part-of-producing-the-document became standing. Every record document has both .md and .html with letterpress styling.

Direct-to-record-friction observation. Two grounding documents in this absorption — loomworks-current-state-grounding-v0_1 (for the architecture spec) and loomworks-manifest-absorption-grounding-v0_1 (this manifest) — landed at Downloads as operational scaffolding, not in the record. The discipline correctly distinguishes record-bound documents from operational scaffolding. Worth noting as a discipline working as intended.

Operational hygiene cluster (newly named as a coherent thing in architecture spec v0.4 §13). v0.42 inherits the framing: the cluster includes the stale manifest (now closed by v0.42 itself), the stale queued-directions document (v0.11; still pre-cleanup-arc), the stale branches across three code repos, the two pre-existing test failures, and the unverified marketing-site observations.

4.D Completion plan

v0.41's table predicted Phase 57; v0.42's table is honest about the reality that prediction surfaces have become harder. No firm next-phase prediction; multiple candidates.

Phase / ArcWhatStatus

|---|---|---|

Phase 60 (Companion-as-Operator-system-interface)First shipped instance: tune_setting handlerClosed mid-May (OL tags phase-60-close-v0_1, phase-60-recovery-v0_1)
Upload pathway assertion-draftingEngine work — draft held Assertions from UploadEventReceived eventsOpen (queued-directions v0.21 §15.3)
Manifest v0.42 absorptionThis documentClosing with this version
Queued directions document absorptionv0.12 absorbing the cleanup-arc + canon + spec-v0.4 + 14 named shipsIdentified, not started
Phase B startKV unification, identifier scheme normalization, job table baseIdentified, not started; Operator's choice when to begin
Phase C startMemory stewardship, multi-backing, multi-Operator scenariosIdentified, not started; depends on Phase B sequencing
Operational hygiene cluster passStale branches, pre-existing test failures, queued directions v0.12, marketing observations statusIdentified, not started; small piece compared to Phases B and C
Loomworks engagement seed v0.10 candidateCapture cleanup-arc framing shifts in seed vocabularyIdentified candidate; bump deferred to its own commission
Methodology v0.21 consolidationLift accumulated candidates (and possibly cross-reference the canon)Identified arc; relationship to canon is open question
Standing-note creationStanding notes on FORAY-as-external-service, Companion-as-Operator-system-interface, Memory backingsIdentified as candidate; not started

Cadence note for subsequent manifests. v0.42 absorbed 13 days of state; this is arc-cadence absorption. Per-phase cadence (v0.31-v0.41 style) was a different shape. Recommended posture going forward: per-arc absorption rather than per-phase, given that work increasingly lands as arcs (cleanup arc, voice modality maturation, engagement creation arc) rather than as discrete phases. The Operator may choose otherwise; v0.42 names the recommendation but does not enforce it.


Section 5 — Open questions and known issues

The methodology canon vs what-dunin7-is-building v0.21 relationship. Open question. Possibilities: v0.21 absorbs the canon by reference; v0.21 absorbs only what the canon hasn't taken; the canon eventually replaces the v0.21 consolidation cadence; they coexist permanently on different cadences. Operator decision required when v0.21 is undertaken.

Upload-pathway phase-identifier reconciliation. The upload-pathway-v1 Operator Layer work landed untagged at 2186d13 (2026-05-27) and does not belong to Phase 60 (which is Companion-as-interface). Its correct phase identifier is unreconciled. A numbering-reconciliation pass (also covering the Entry 99-A Phase 57 reassignment) is the place to settle this; not attempted in v0.43.

The marketing-site observations status. Two of three observations are awaiting Operator confirmation (room-order issue likely resolved by 0d86610; the other two unverified).

The completion plan table's predictive value. v0.41's table predicted Phase 57 confidently. v0.42's table presents multiple candidates without firm prediction. Whether the predictive framing returns when work cadence settles, or whether the completion plan permanently shifts toward "multiple candidates" — open question.

The seed bump deferral. Recommended as warranted in v0.42 but not actioned. The Operator's commission to bump candidate seed v0.9 to v0.10 (or further) is identified work.


Changelog