RECON-FOUNDATION-LENS-01¶
Status: Canonical. Type: Reconnaissance pass (new artefact class — see §0). Governance position: Derivative canonical (see §0 — proposed position between ADR doc and briefs in the governance hierarchy). Date: 2026-05-27 Authors: Tim, with Claude as drafting partner. Anchored against: client-spine.md v2 (2026-05-26, 417 lines), architecture-decisions.md v4 (2026-05-26, 646 lines, ADRs 001–019), standing-rules.md (2026-05-26, post-governance-hierarchy update, 615 lines), Alex's Time Machine for Claude (2026-05-26, 271 lines), cartography v1 (2026-05-26).
§0. What this document is¶
This is a reconnaissance pass — a new artefact class for RTOpacks. It is distinct from a brief, an ADR, a Time Machine, or a module spec. It is produced when the canonical foundation moves significantly enough that the queue of substrate work needs to be re-evaluated against the new foundation rather than continuing forward against the old one.
The recon answers three questions across every substrate domain:
- What IS — the canonical target state, as articulated by the current foundation
- What's IN BETWEEN — the current substrate state, what's right (already aligned) and what's wrong (misaligned)
- What NEEDS TO BE done — the gap, expressed as work, classified by whether existing briefs already cover it
Output: a gap inventory (§4), a re-sequenced queue (§5), and a delta document (§6).
Why this is its own artefact class¶
- It is bigger than a brief — it produces briefs rather than executing one
- It is smaller than the canonical foundation — it derives from the foundation, doesn't define it
- It is not a Time Machine — it is forward-looking work product, not session handover
- It is not an ADR — it doesn't make new architectural decisions, it walks existing ones against substrate state
Governance position — derivative canonical¶
The recon document sits between the ADR doc (governance position 4) and briefs (position 8). It is canonical at its own resolution: the gap analysis it produces is load-bearing for queue sequencing. But it does not override anything above it in the hierarchy. It is an auditable record of how the substrate was walked against a foundation state at a point in time.
Proposed addition to standing-rules.md governance hierarchy:
1. Client Spine
2. WS-PRODUCT-01
3. Standing Rules
4. Architecture Decisions
4b. Reconnaissance passes (recon documents) ← new
5. Design Foundation
6. Glossary
7. Module specs
8. Briefs
The "4b" notation captures that recon documents derive from the ADR layer; they are not above it but they are above briefs. The hierarchy decision is itself worth a small standing-rules update once this pass validates the artefact class.
When this artefact class gets re-run¶
Three triggers:
- Foundation shift — a load-bearing canonical doc moves significantly (as it did 2026-05-26)
- Substrate shift — a major substrate change lands that invalidates assumptions in the queue
- Queue drift — the brief queue accumulates enough filed-but-not-executed work that its assumptions need re-validation
Candidate standing rule: RECON-PASS-ON-FOUNDATION-SHIFT — when a canonical foundation doc moves significantly, a recon pass precedes resumption of substrate work. Worth pinning after this pass validates the method.
§1. The lens — load-bearing commitments the foundation establishes¶
This section names the load-bearing commitments from the current foundation. Not re-deriving them; naming them so the rest of the recon has a single reference point.
The five composing principles¶
-
The closed loop is the product (ADR-001, spine §2). Five phases: Sense, Decide, Execute, Deliver-and-Assess, Evidence. Every substrate decision evaluated against whether it extends the loop or fragments it.
-
The substrate is the moat (ADR-002, spine §4). Ingested data is the primary competitive asset. Hoover-mentality on ingestion (ADR-003); pristine-source on Layer 1 (ADR-004); recompute-as-needed on derived layers (ADR-005). Product surfaces are derived presentations of substrate.
-
Modular consolidation (ADR-016, spine §9). Second instance of a pattern triggers modularisation; third instance must consume the shared module. Applies to external service integration, internal patterns, operational machinery.
-
The bus pattern (ADR-017, spine §9). Every flow has a named, traceable path through known infrastructure. Inbound, outbound, internal, scheduled buses. Findability, observability, replaceability.
-
Architectural cartography (ADR-018, spine §9). The substrate documents itself via canonical Mermaid maps with explicit naming convention. Modules produce nameable units; buses produce traceable flows; cartography makes both legible.
The naming convention (ADR-018 v4)¶
Structure: <scope-prefix>-<domain-or-module>-<function>-<artefact-type>-<environment> — five segments, each distinct semantic role.
Determination test:
- Q1 — Is the name fully self-describing? If yes → Q1b. If no → Q2.
- Q1b — Is the behaviour environment-neutral? If yes → utility (no scope prefix). If no → Q2.
- Q2 — Does the function reach a client outcome directly? If yes →
rto-*prefix. If no → Q3. - Q3 — Otherwise →
rtopacks-*prefix.
Vocabulary: module, bus, wrapper, proxy, queue, db, kv, r2, worker, surface, connector.
Environment: prod, dev, staging (full word).
Anti-escape-hatch discipline: utility is architecturally earned, not name-given.
Asymmetric rename cost: Workers renamable (cheap); D1 databases not renamable (must be created-new-and-data-migrated). Phased conformance sequencing per ADR-018.
Mandarin enforcement (ADR-019)¶
Wrapper code is environment-neutral; environment selection happens at credential-loading time. Four enforcement layers: DNS (different TLDs), substrate (CF-secret scoping), admin surface (visual broadcasting + credential cartography), operator discipline (secondary safety net). The admin surface is first-class enforcement infrastructure.
ADR-019 is what makes ADR-018's Q1b test architecturally achievable.
External wrapper pattern (ADR-015)¶
External service integrations wrap the provider's full published API surface. Composes with ADR-016 (consolidation as general principle), ADR-017 (buses layer on top of wrappers), ADR-019 (wrapper code is environment-neutral).
Customer types and provenance (ADR-011, spine §3)¶
Three customer types: Type 1 (registered RTO), Type 2 (pre-registration), Type 3 (non-RTO content creator). Every field in the client file carries a provenance marker: regulator-verified, self-reported, derived, or RTOpacks-created. Provenance is a load-bearing schema property.
Cloudflare-first for identity (ADR-006)¶
Cloudflare is evaluated first for all new capability including identity. External providers entertained only for gaps Cloudflare structurally cannot close. Multiple targeted providers may fill different gaps; not a single IDP replacement.
User-and-credential separation (ADR-007, spine §7)¶
User entity (roles, actions, client attachment) and credential entity (authentication artefact) are separated at the schema level. Credential management is outsourced.
Client-file attachments are deliberate (ADR-009)¶
Every attachment to the client file answers four substrate questions: what does it know, where does it live, who sees it, how does it fail. No attachment built without those four answers.
Cellcast as SMS provider (ADR-014)¶
Cellcast (AU-native, ISO 27001) is the canonical SMS provider. SMS module is the canonical first instance of the full-API-wrapper pattern (ADR-015) applied to a new integration.
Export-portable output is first-class (ADR-010)¶
SCORM, print, and other exportable formats are first-class workflows, not special-case features. Native delivery (InstaLearn) and export are both first-class paths. Closed loop is intentionally open at Deliver-and-Assess for export-using clients.
Governance hierarchy (standing-rules.md)¶
Eight levels (highest to lowest):
- Client Spine
- WS-PRODUCT-01
- Standing Rules
- Architecture Decisions
- Design Foundation
- Glossary
- Module specs
- Briefs
CANONICAL-DECISION DISCIPLINE: load-bearing decisions written to ADRs at the moment of making them. SPINE-AND-ADR-AS-GOVERNANCE: these docs are canonical governance artefacts.
What's deliberately NOT in the lens¶
Spine §9's "current implementation note" explicitly states these principles describe target state, not current state. The recon's job is to make the gap between target and current legible. The lens is the target.
§2. The substrate domains¶
The substrate decomposes into 12 domains. Each receives the IS / CURRENT / GAP treatment in §3.
| # | Domain | One-line scope |
|---|---|---|
| 1 | Naming convention | Component, worker, database, KV, R2, secret, route names — and conformance to ADR-018 v4 |
| 2 | Data taxonomy | Pith / Sync-output / Peel / Intake classification; three-layer architecture conformance |
| 3 | Environment separation (Mandarin) | ADR-019's four enforcement layers against current substrate |
| 4 | Credential cartography | External integrations × credentials × admin-surface visibility × rotation |
| 5 | Identity model | User vs credential separation; org membership; auth flow; three customer types |
| 6 | External wrapper pattern | ADR-015 + ADR-019 conformance across every external integration |
| 7 | Bus pattern implementation | ADR-017's four bus types mapped to CF primitives; flow conformance |
| 8 | Modular consolidation | Recurring patterns; second/third instance triggers; consolidation state |
| 9 | Module surfaces | Studio, People, Record, Radar, Documents, InstaLearn alignment with WS-PRODUCT-01 + specs |
| 10 | Cartography conformance | v1 map vs ADR-018 v4 convention; substrate-state-side of naming |
| 11 | Observability / IRSL | Run-status logging consistency; bus-level vs per-worker; IRSL coverage |
| 12 | Ingested corpora | TGA, yourcareer, ABS, funding/tender data — freshness, completeness, audit posture |
Domains 1 and 10 are intentionally separate. Naming is the rule (what should things be called); cartography conformance is the substrate state (how many things actually conform).
§3. Per-domain assessment¶
For each domain: IS (target state from foundation) / CURRENT (substrate state) / GAP (right / wrong / unknown).
CURRENT entries marked "needs Alex confirmation" are substrate-state items only Alex can ground from inside the substrate. Path (a): Claude drafts as far as project-file knowledge allows; Tim walks confirmation items past Alex via close-report cadence.
§3.1 Domain — NAMING CONVENTION¶
IS¶
Per ADR-018 v4, every named substrate component carries a name following <scope-prefix>-<domain-or-module>-<function>-<artefact-type>-<environment>.
Determination test resolves scope-prefix deterministically via Q1 → Q1b → Q2 → Q3. Vocabulary closed: module, bus, wrapper, proxy, queue, db, kv, r2, worker, surface, connector. Environment full-word: prod, dev, staging.
Utility category small and anti-escape-hatched. Asymmetric rename cost canonical (Workers renamable, D1 not).
Pre-existing cloudflare-naming-canon.md (9 principles, 179 lines) has four documented tensions with ADR-018 v4 — see Alex's Time Machine §8.
CURRENT¶
- Cartography v1 exists at
docs/docs/ops/cartography/v1-system-map.md(261 lines) with 10,000-foot Mermaid + working names per ADR-018. 7 naming-convention reservations documented alongside. - 36 CF Workers deployed. Conformance count to ADR-018 v4: needs Alex confirmation.
- 17 D1 databases. Conformance count: needs Alex confirmation.
- Pre-existing
cloudflare-naming-canon.mdatdocs/docs/infrastructure/cloudflare-naming-canon.md(Alex's §8). - Apps-layer naming (
apps/site,apps/workspace) uses Next.js convention. -oc-suffix legacy on some DBs (subsumed by WORKER-AND-DB-NAMING-CONFORMANCE-01).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 1.1 | ADR-018 v4 canonical | Right | — | No work. |
| 1.2 | Spine §9 four-segment vs ADR-018 v4 five-segment | Wrong — canonical-doc drift | — | NEW. SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01. Fold into canon reconciliation or 15-min standalone. |
| 1.3 | Canon vs ADR-018 four tensions | Wrong (foundation contradicts itself) | CANON-VS-ADR-018-RECONCILIATION-01 | Tomorrow's first substrate work. |
| 1.4 | Asymmetric rename cost canonical | Right | — | No work. |
| 1.5 | Worker conformance to convention | Wrong at scale | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 1 | After canon reconciliation. |
| 1.6 | DB conformance to convention | Wrong at scale, asymmetric cost | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 2 + 3 | Phase 2 opportunistic; Phase 3 deferred. |
| 1.7 | Borderline cases (qb-reconcile, stripe-*) |
Resolved by ADR-018 worked examples | EXTERNAL-WRAPPER-CONFORMANCE-01 | Wrapper conformance handles naming. |
| 1.8 | Apps-layer scope (apps/site, apps/workspace) |
Unknown — boundary not explicit | — | NEW. APPS-AND-ROUTE-NAMING-SCOPE-DECISION-01. Half-hour decision brief. |
| 1.9 | Internal route naming scope | Unknown | — | NEW. Folds into 1.8. |
| 1.10 | Secret naming convention | Partially in vocabulary; not explicit | — | NEW. Folds into 1.8 or canon reconciliation. |
| 1.11 | Cartography v1 → v2 | v1 working names; v2 convention-conforming | CARTOGRAPHY-V2-CONVENTION-CONFORMING-01 | After first substrate-changing brief. |
| 1.12 | Module-level drilldown | Future | CARTOGRAPHY-MODULE-DRILLDOWN-01 | Deferred. |
New briefs surfaced: SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01, APPS-AND-ROUTE-NAMING-SCOPE-DECISION-01.
§3.2 Domain — DATA TAXONOMY¶
IS¶
Per spine §4 ("The three-layer data architecture") and ADR-004/005:
- Layer 1 — Ingested raw. All upstream data sources held pristine and immutable. TGA, yourcareer, ABS, funding/tender. Refreshed via sync; never modified.
- Layer 2 — Derived and computed. Joins, aggregations, model outputs. Recomputable from Layer 1; not precious.
- Layer 3 — Client and operational state. Client files, corrections, audit trails, generated outputs.
Pith / Sync-output / Peel / Intake taxonomy (from prior memory work and OPS-DB-CONTENT-AUDIT-01) classifies the 17 D1 databases against the three layers and against client-facing vs operator-facing roles. MANDARIN enforcement (ADR-019) requires per-environment separation in addition to taxonomy.
CURRENT¶
- 17 D1 databases (Alex's §10).
- Three-layer architecture partially mixed in current ops-db substrate (spine §4 current implementation note: "Layer 2 and Layer 3 are partially mixed").
- OPS-DB-CONTENT-AUDIT-01 closed this morning (Alex's §1). Surfaced "substantial ad-hoc attachment" (spine §9 current implementation note).
- OPS-DB split shape decision held downstream (Alex's §10): Shape A / B / C choices not yet made.
- MANDARIN finishing work estimated 70-75% complete from prior memory; needs Alex confirmation against current substrate state.
- Closed work: MANDARIN-VIOLATION-01a (per prior memory).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 2.1 | Three-layer architecture as principle | Right | — | No work. |
| 2.2 | Layer 2 / Layer 3 mixing in ops-db | Wrong (acknowledged in spine) | OPS-DB split (Shape A/B/C decision held) | Decision brief on shape needed before split execution. |
| 2.3 | Pith/Sync-output/Peel/Intake taxonomy applied | Partially right — needs full inventory | INGESTED-SUBSTRATE-INVENTORY-01 (filed per Alex's §7) | Inventory produces canonical taxonomy assignment. |
| 2.4 | MANDARIN finishing | Wrong at ~25-30% of substrate | MANDARIN-VIOLATION-01b, 01c (per prior memory) | Continue per existing sequence. |
| 2.5 | OPS-DB-STAGING-IRSL-SCHEMA-PARITY | Wrong (gap identified) | OPS-DB-STAGING-IRSL-SCHEMA-PARITY-01 (Alex's §7, ~5 min) | Small; can land opportunistically. |
| 2.6 | KN-15128 sacred rule conformance | needs Alex confirmation — sacred is sacred but verify no incidental writes | — | Audit if any doubt; otherwise no work. |
| 2.7 | OPS-DB split shape decision | Unknown — held | — | NEW. OPS-DB-SPLIT-SHAPE-DECISION-01. Decision brief; prerequisite to execution briefs. |
| 2.8 | Layer 2 derivation logic in version control | needs Alex confirmation — ADR-005 requires this | — | Audit if not already verified. |
New brief surfaced: OPS-DB-SPLIT-SHAPE-DECISION-01.
§3.3 Domain — ENVIRONMENT SEPARATION (MANDARIN)¶
IS¶
Per ADR-019, four enforcement layers (strongest to weakest):
- DNS-level —
admin.rtopacks.devvsadmin.rtopacks.com.au(different TLDs). - Substrate-level — CF Workers Secrets scoped per environment; cross-side access structurally impossible.
- Admin-surface-level — visual broadcasting via UI cues + URL distinction.
- Operator discipline — secondary safety net only.
Wrapper code is environment-neutral. Environment selection at credential-loading time, not code-branch time.
CURRENT¶
- DNS layer:
rtopacks.devandrtopacks.com.auboth exist (per prior memory). needs Alex confirmation whetheradmin.subdomains are configured on both TLDs. - Substrate layer: CF Workers Secrets exist and are used. Per-environment scoping discipline: needs Alex confirmation that every external-integration secret is correctly scoped (not just present).
- Admin-surface layer: Current admin surface exists but does not yet broadcast credential cartography per ADR-019's specification. Visual broadcasting (banner colour, header treatment, persistent UI indicators): needs Alex confirmation on current state.
- Operator discipline: Sole-operator state (Tim, with possible future Jimmy) holds while pre-revenue.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 3.1 | DNS-level enforcement (TLD separation) | needs Alex confirmation | — | Audit; document in admin-auth brief. |
| 3.2 | Substrate-level secret scoping | needs Alex confirmation | — | Audit; folds into ADMIN-AUTH-MODEL-RECONCILIATION-01. |
| 3.3 | Admin-surface credential cartography | Wrong — current admin not yet designed for this | ADMIN-AUTH-MODEL-RECONCILIATION-01 (scope expanded per ADR-019) | Major design work; first-class. |
| 3.4 | Wrapper code environment-neutrality | Wrong — Stripe + QB have per-environment branches (Alex's §5) | EXTERNAL-WRAPPER-CONFORMANCE-01 (scope expanded per ADR-019) | Retroactive refactor. |
| 3.5 | Audit trail of credential changes | Future | — | ADR-019 names this as future operational discipline; not blocking. |
| 3.6 | Dev vs prod admin surface UX differentiation | Wrong — not yet designed | ADMIN-AUTH-MODEL-RECONCILIATION-01 | Asymmetric optimisation per ADR-019. |
No new briefs surfaced. Existing briefs cover the work; scope expansions are already captured in Alex's Time Machine.
§3.4 Domain — CREDENTIAL CARTOGRAPHY¶
IS¶
Per ADR-019, the admin surface for each side is canonical external-integration cartography:
- Per-environment inventory of every external service that side connects to
- State visibility: current token, last-rotated timestamp, expiry, who rotated
- Rotation guidance per integration
- Operational frequency awareness — dev optimised for quick rotation, prod for careful rotation with confirmation + audit trail
Substrate-derived inventory (new wrapper deployment → new entry; wrapper removal → entry removed). Not maintained by hand.
CURRENT¶
- Current admin surface exists but does not implement credential cartography as designed by ADR-019.
- External integrations in substrate (per ADR mentions and prior memory): Cellcast (planned, not yet built per ADR-014), Stripe (partial wrapper), QuickBooks (partial wrapper), Resend (email), Twilio scaffolding (to be superseded by Cellcast per ADR-014), TGA upstream (mirror), yourcareer ingest, ABS data, government tender APIs, geocoder.
- Credential state visibility: needs Alex confirmation on whether token timestamps, last-rotated, expiry are tracked anywhere structured.
- Rotation discipline: needs Alex confirmation on current per-integration rotation patterns.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 4.1 | Admin-surface-as-credential-cartography | Wrong — not implemented | ADMIN-AUTH-MODEL-RECONCILIATION-01 | First-class design work per ADR-019. |
| 4.2 | Substrate-derived integration inventory | Wrong — not implemented | ADMIN-AUTH-MODEL-RECONCILIATION-01 | Design + implementation. |
| 4.3 | Token state visibility (last-rotated, expiry) | needs Alex confirmation | — | Audit current state; informs admin brief. |
| 4.4 | Per-integration rotation guidance | Wrong — not surfaced | ADMIN-AUTH-MODEL-RECONCILIATION-01 | Documentation discipline. |
| 4.5 | CREDENTIAL-PROVIDER-DECISION-01 | Pending — prerequisite for several downstream identity briefs | CREDENTIAL-PROVIDER-DECISION-01 | Evaluates CF identity primitives against three-customer-type requirements per ADR-006. |
| 4.6 | Audit trail of credential changes | Future per ADR-019 | — | Not blocking; revisit when first paying customer comes online. |
No new briefs surfaced. ADMIN-AUTH-MODEL-RECONCILIATION-01 is the umbrella brief; its scope is already expanded per ADR-019.
§3.5 Domain — IDENTITY MODEL¶
IS¶
Per ADR-007 + ADR-011 + ADR-012 + spine §7 + §8:
- User and credential separated at schema level. User entity (roles, actions, client attachment). Credential entity (type, identifier, validity window, parent-user reference).
- Credential management is outsourced (ADR-006 + ADR-007). RTOpacks holds references, not credentials.
- Three customer types (ADR-011): Type 1 (registered RTO), Type 2 (pre-registration), Type 3 (non-RTO content creator). Different signup flows; different product surfaces; different provenance posture.
- Provenance markers on every client-file field:
regulator-verified,self-reported,derived,RTOpacks-created. - Signup-and-admin-authority separation (ADR-012): account creation open via TGA-mirror-matched email + SMS; admin authority asynchronous via CEO notification.
- Federation as future credential type (ADR-006 + spine §7), not separate user system.
CURRENT¶
- Four identity conventions currently in the database (spine §7 "Pending identity work"): email-keyed, UUID-keyed, prefix-keyed, randomblob-keyed. Hard prerequisite for any identity-related database migration.
- passkey_credentials table is placeholder, not prototype (ADR-007 refinement). OPS-DB-CONTENT-AUDIT-01 found
sign_count=0on both enrolled rows — verification has never succeeded against the table. - CF Access is the practical admin auth path (per prior memory + Alex's §7 ADMIN-AUTH-MODEL-RECONCILIATION-01 framing).
- Cross-DB duplicates exist: users / products / passkey_credentials (per Alex's §7 CROSS-DB-DUPLICATE-CONSOLIDATION-01).
- Orgs has 2 rows for same UCCA RTO (Alex's §7 ORGS-DUPLICATE-UCCA-RECORD-CLEANUP-01).
- Signup flow not yet built as canonical Type 1/2/3 implementation.
- Provenance markers in client file: needs Alex confirmation on current schema state.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 5.1 | User/credential separation as principle | Right | — | No work. |
| 5.2 | Four identity conventions in DB | Wrong (acknowledged) | IDENTITY-MODEL-RATIONALISATION-01 (filed; Step 0 prerequisite) | High priority — blocks OPS-DB split. |
| 5.3 | passkey_credentials state | Wrong (placeholder, not real) | ADMIN-AUTH-MODEL-RECONCILIATION-01 (subsumed by CREDENTIAL-PROVIDER-DECISION-01) | Decide: graduate / drop / replace. |
| 5.4 | Cross-DB user/product/passkey duplicates | Wrong | CROSS-DB-DUPLICATE-CONSOLIDATION-01 (3 sub-briefs per Alex's §7) | After IDENTITY-MODEL-RATIONALISATION-01. |
| 5.5 | Orgs duplicate UCCA record | Wrong | ORGS-DUPLICATE-UCCA-RECORD-CLEANUP-01 (Alex's §7) | Small cleanup; can land opportunistically. |
| 5.6 | Three customer types in product | Partially right; needs Alex confirmation on signup flow state | Existing signup work | Type-aware signup flow design. |
| 5.7 | Provenance markers in schema | needs Alex confirmation | — | Audit; design brief if not in place. |
| 5.8 | CEO notification flow (ADR-012) | needs Alex confirmation — likely not yet built | — | Implementation brief at appropriate time. |
| 5.9 | Federation scaffold (future) | Right (future per spine §7) | — | Deferred until enterprise contract justifies. |
| 5.10 | REGULATORY-EVENTS-TENANT-ISOLATION-01 (post-revenue) | Wrong (acknowledged future) | REGULATORY-EVENTS-TENANT-ISOLATION-01 (filed per Alex's §7) | Post-revenue. |
No new briefs surfaced. Identity work is well-covered by existing queue. The sequencing is load-bearing: IDENTITY-MODEL-RATIONALISATION-01 is Step 0 for several downstream briefs.
§3.6 Domain — EXTERNAL WRAPPER PATTERN¶
IS¶
Per ADR-015 + ADR-019 + ADR-014:
- Every external service integration wraps the provider's full published API surface, not only currently-consumed endpoints.
- Wrapper code is environment-neutral (ADR-019). Asymmetry lives in credential and configuration loading, not in code paths.
- Wrapper sits inside a shared internal module that consumers route through (ADR-014's Cellcast pattern as canonical first instance).
- EXT-API RULE (standing-rules.md): reference doc in
docs/ops/required before deploy. Reference covers endpoint inventory, auth model, rate limits, known quirks, sandbox vs production posture, example requests.
CURRENT¶
External integrations in substrate:
- Cellcast (SMS) — ADR-014 canonical first instance. Not yet built. Twilio scaffolding to be superseded.
- Stripe (billing) — partial wrapper exists. Per-environment code branches present (Alex's §5 implication). Needs retroactive ADR-015 + ADR-019 conformance.
- QuickBooks (accounting) — partial wrapper. Same posture as Stripe.
- Resend (email) — wrapper state needs Alex confirmation.
- Twilio scaffolding (SMS) — to be removed per ADR-014.
- TGA upstream (mirror) — extensive integration via Swagger. Wrapper conformance state needs Alex confirmation.
- yourcareer ingest — wrapper state needs Alex confirmation.
- ABS data ingest — wrapper state needs Alex confirmation.
- Government tender APIs (AusTender) — wrapper state needs Alex confirmation.
- Geocoder — wrapper exists; per ADR-018 worked examples, qualifies as utility (Q1 + Q1b pass).
- Cellcast OpenAPI spec available at
developer.cellcast.com/cellcast-api.swagger.yaml.
Per Alex's §7: SMS-CURRENT-STATE-AUDIT-01 is filed (audit Twilio scaffolding before Cellcast module brief).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 6.1 | Cellcast wrapper / SMS module | Not built — canonical first instance | (Future SMS module brief; SMS-CURRENT-STATE-AUDIT-01 first) | Audit, then build. |
| 6.2 | Stripe ADR-015 conformance | Wrong (partial wrapper) | EXTERNAL-WRAPPER-CONFORMANCE-01 | Retroactive refactor. |
| 6.3 | Stripe ADR-019 conformance (env-neutral code) | Wrong (per-env branches) | EXTERNAL-WRAPPER-CONFORMANCE-01 (scope extended per ADR-019) | Retroactive refactor. |
| 6.4 | QuickBooks ADR-015 conformance | Wrong | EXTERNAL-WRAPPER-CONFORMANCE-01 | Retroactive refactor. |
| 6.5 | QuickBooks ADR-019 conformance | Wrong | EXTERNAL-WRAPPER-CONFORMANCE-01 | Retroactive refactor. |
| 6.6 | Resend wrapper conformance | needs Alex confirmation | — | Audit; folds into EXTERNAL-WRAPPER-CONFORMANCE-01 if non-conformant. |
| 6.7 | Twilio scaffolding removal | Wrong — superseded by Cellcast | SMS-CURRENT-STATE-AUDIT-01 → SMS module brief | After audit. |
| 6.8 | TGA upstream wrapper conformance | needs Alex confirmation | — | Audit; likely covered by INGESTED-SUBSTRATE-INVENTORY-01. |
| 6.9 | yourcareer / ABS / tender wrapper conformance | needs Alex confirmation | — | Audit; folds into ingested-corpora work. |
| 6.10 | Geocoder utility status | Right (per ADR-018 worked examples) | — | No work. |
| 6.11 | EXT-API RULE compliance (reference docs) | needs Alex confirmation per integration | — | Audit; missing docs are filed as gaps per integration. |
| 6.12 | Cellcast reference doc | Required per EXT-API RULE before SMS module deploys | (SMS module brief includes this scope) | Built with module. |
| 6.13 | BILLING-VENDOR-RECONCILIATION-01 | Wrong (post-CF-migration verify) | BILLING-VENDOR-RECONCILIATION-01 (filed per Alex's §7) | Prereq to any billing migration. |
One new gap surfaced: EXT-API-RULE-COMPLIANCE-AUDIT-01 (or similar) — audit which integrations have reference docs in docs/ops/ and which don't. Small audit brief.
§3.7 Domain — BUS PATTERN IMPLEMENTATION¶
IS¶
Per ADR-017, every flow passes through a known, named, observable structure:
- Inbound buses — webhooks, scheduled triggers, external pushes
- Outbound buses — external API calls (layered on top of per-provider wrappers from ADR-015)
- Internal buses — worker-to-worker communication
- Scheduled buses — cron-driven and time-triggered firings (consistent run-status logging per IRSL pattern)
Buses not necessarily literal message queues. Required: named, traceable path through known infrastructure with consistent instrumentation properties applied uniformly. Findability + observability + replaceability.
CURRENT¶
- Many flows do not yet route through named buses (ADR-017 "Current implementation note"). Bringing flows under bus discipline is per-brief-as-flows-are-touched, not mass refactor.
- The IRSL pattern is the canonical scheduled-bus implementation for cron-driven sync workers (
_ingest_runstables acrossrto-nrt-db,rto-ops-db,rto-radar-db,engine-db-ocper Alex's §11). - Queue-based chain dispatch is established per standing-rules.md ("Queue-based chain dispatch is the standard pattern") for self-dispatch within a worker.
- Webhook handlers exist for Stripe, QuickBooks (per ADR-019 examples and prior memory) but may not yet be unified into a named inbound-webhook-bus.
- Bus pattern CF-primitive mapping unresolved (Alex's §7 BUS-PATTERN-CF-IMPLEMENTATION-DECISION-01).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 7.1 | Bus pattern as principle | Right | — | No work. |
| 7.2 | CF-primitive mapping for four bus types | Wrong (decision held) | BUS-PATTERN-CF-IMPLEMENTATION-DECISION-01 (filed per Alex's §7) | Decision brief; prereq for implementation. |
| 7.3 | IRSL pattern coverage (scheduled bus) | Mostly right — 8 _ingest_runs tables; needs Alex confirmation on completeness |
— | See §3.11. |
| 7.4 | Inbound webhook bus | needs Alex confirmation — webhook handlers scattered? | — | Audit; design brief if non-conformant. |
| 7.5 | Outbound bus (over wrappers) | Wrong — not yet implemented as named bus | (Implementation brief after #7.2) | Designs depend on CF-primitive mapping decision. |
| 7.6 | Internal bus (worker-to-worker) | needs Alex confirmation — Service Bindings used per prior memory | — | Audit current patterns; consolidate if recurring. |
| 7.7 | Naming conformance of existing buses | Wrong — pre-ADR-018 names | WORKER-AND-DB-NAMING-CONFORMANCE-01 + CARTOGRAPHY-V2-CONVENTION-CONFORMING-01 | Handled by naming work. |
One new gap surfaced: INBOUND-WEBHOOK-BUS-AUDIT-01 — audit how webhook handlers are currently structured before designing the canonical bus. Small audit brief.
§3.8 Domain — MODULAR CONSOLIDATION¶
IS¶
Per ADR-016: second instance of a pattern triggers consolidation; third instance must consume the shared module. Applies to:
- External service integration (Cellcast SMS, future providers)
- Internal patterns (IRSL for sync logging, user-credential separation, three-layer data architecture)
- Operational machinery generally
Briefs that introduce a second instance include consolidation as part of scope, not deferred follow-up. Over-modularising explicitly accepted as a risk; two-instance threshold protects against it.
CURRENT¶
- IRSL pattern — canonical first consolidation example for sync logging. Operational across 8
_ingest_runstables. - Three-layer data architecture (Layer 1/2/3) — implicit consolidation per ADR-004/005.
- Cellcast as canonical first wrapper instance — sets pattern for future external services.
- OPS-DB-CONTENT-AUDIT-01 surfaced "substantial ad-hoc attachment" (spine §9). Specific second-instance patterns identified by audit: needs Alex confirmation on which patterns are surfaced.
- Twilio scaffolding being superseded by Cellcast module is a consolidation instance (replacing scattered Twilio references with shared module).
- Stripe + QuickBooks wrappers are first instances each of their providers; the wrapper-conformance brief is consolidation into ADR-015 + ADR-019-conformant shapes.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 8.1 | ADR-016 as principle | Right | — | No work. |
| 8.2 | IRSL pattern as instance | Right | — | No work; maintain. |
| 8.3 | SMS consolidation (Twilio → Cellcast) | Pending | (SMS module brief) | Per Alex's §7. |
| 8.4 | Wrapper consolidation (Stripe + QB into ADR-015 shape) | Pending | EXTERNAL-WRAPPER-CONFORMANCE-01 | Retroactive consolidation. |
| 8.5 | Second-instance patterns from OPS-DB audit | needs Alex confirmation | — | Specific patterns from audit close report; may surface new consolidation briefs. |
| 8.6 | Client-file attachment patterns (ADR-009) | Partially right; needs Alex confirmation on recurring shapes | — | Audit if attachment patterns recurring. |
| 8.7 | Over-modularising failure mode | Right (acknowledged in ADR-016) | — | Discipline check at each consolidation brief. |
Potential new gap (requires Alex confirmation): SECOND-INSTANCE-PATTERN-AUDIT-01 — extract from OPS-DB-CONTENT-AUDIT-01 close report which specific patterns are at second-instance threshold and need consolidation briefs filed. Probably already implicit in audit close; needs surfacing.
§3.9 Domain — MODULE SURFACES¶
IS¶
Per WS-PRODUCT-01 + spine §6 + individual module specs:
The six current modules and their alignment to streams:
- Studio (compliant execution stream) — STUDIO-SPEC-01 v0.6 — content production
- People (compliant execution stream) — PC-SPEC-01 v0.2 — workforce compliance
- Record (compliant execution stream) — RECORD-SPEC-01 v0.2 — evidence layer
- Radar / Field Observer (strategic intelligence stream) — RADAR-SPEC-01 v0.2 — RTO intelligence
- Documents (compliant execution stream) — DOC-SPEC-01 v0.1 — to be merged with Record per project brief
- InstaLearn (compliant execution stream) — IL-SPEC-01 v0.1 — credential issuance
Two-stream framing (ADR-013): strategic intelligence + compliant execution composing into closed loop (ADR-001). Export-portable output is first-class (ADR-010).
CURRENT¶
- Studio deployed. Phase 1 / v0.6.
- People deployed (Phase 1).
- Record specced, not yet built.
- Radar deployed.
- Documents specced, marked for merge with Record.
- InstaLearn specced, deployment state needs Alex confirmation.
- Studio session-completion gap — filed as STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 (from prior memory).
setup_complete=1has never been written in any environment. Flagged as requiring elevated visibility before any product demonstration. - Public surface strategy — Tim's recent product decision: curated showcase (~20 real qualifications) rather than full corpus. Funnel architecture: public search surface with populated qualification detail pages, blurred members-only sections. "Built on facts" positioning.
- APPS-SITE-PRODUCT-SURFACE-DECISION-01 — open decision brief (per prior memory): is apps/site marketing or dual customer-product surface?
- NRT-SEARCH-RESPONSE-SEPARATION-01 — closed (per prior memory).
- MANDARIN-VIOLATION-01a, 01b — closed (per prior memory).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 9.1 | Two-stream framing | Right (ADR-013) | — | No work. |
| 9.2 | Studio session-completion path | Wrong — setup_complete=1 never written |
STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 (filed) | Elevated visibility per prior memory. Must resolve before product demonstration. |
| 9.3 | Documents-into-Record merge | Pending | (Future Record-build brief subsumes Documents) | Sequenced with Record build. |
| 9.4 | InstaLearn deployment | needs Alex confirmation | — | If not deployed, plan; if deployed, audit conformance. |
| 9.5 | Public surface strategy (curated showcase) | Pending — Tim decision made, implementation queued | — | Brief shape: PUBLIC-CURATED-SHOWCASE-IMPLEMENTATION-01 (or similar). |
| 9.6 | APPS-SITE-PRODUCT-SURFACE-DECISION-01 | Open decision | APPS-SITE-PRODUCT-SURFACE-DECISION-01 (filed) | Resolves apps/site role; informs above. |
| 9.7 | Module spec versions (v0.x) | needs Alex confirmation all module specs current | — | Audit; refresh stale ones. |
| 9.8 | WS-PRODUCT-01 vs module spec coherence | needs Alex confirmation | — | Audit during recon-pass equivalent for module work. |
| 9.9 | Export-portable output (ADR-010) | Right — first-class capability | — | No work; maintain. |
New brief surfaced: PUBLIC-CURATED-SHOWCASE-IMPLEMENTATION-01 (or naming-conformant variant). Public surface strategy implementation work.
§3.10 Domain — CARTOGRAPHY CONFORMANCE¶
IS¶
Per ADR-018 v4:
- Canonical map at canonical repo path, rendering into
docs.rtopacks.com.au - Hierarchical: 10,000-foot system level → module level → component level
- Mermaid as primary tool
- Living document — updates in same commit as substrate changes
- Names per the determination test (Q1 → Q1b → Q2 → Q3)
CURRENT¶
- Cartography v1 exists at
docs/docs/ops/cartography/v1-system-map.md(261 lines, per Alex's §3). - Resolution: 10,000-foot system view only.
- Naming on v1: working names per ADR-018 as it was when v1 was drawn — but ADR-018 was refined three times after v1 landed (the v1 reservations produced those refinements per Alex's §6). So v1 names predate v4 convention in some places.
- No module-level or component-level maps yet.
- v1's 7 reservations + 7 doesn't-fit-cleanly flags + 7 ad-hoc-attachment flags documented alongside.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 10.1 | Cartography as principle | Right | — | No work. |
| 10.2 | v1 system-level map exists | Right | — | No work. |
| 10.3 | v1 names predate ADR-018 v4 | Wrong | CARTOGRAPHY-V2-CONVENTION-CONFORMING-01 (filed) | Runs after first substrate-changing brief. |
| 10.4 | Module-level maps | Not yet drawn | CARTOGRAPHY-MODULE-DRILLDOWN-01 (filed) | Deferred. |
| 10.5 | Component-level maps | Not yet drawn | (Future modular work) | Deferred until module-level lands. |
| 10.6 | Map updates in same commit as substrate changes | needs Alex confirmation — discipline check | — | Discipline reinforced by METADATA-RECONCILIATION-AT-COMMIT (candidate standing rule). |
| 10.7 | Map rendering at docs.rtopacks.com.au |
needs Alex confirmation | — | Confirm rendering pipeline; small if broken. |
| 10.8 | v1 doesn't-fit-cleanly flags | Pending | (Folded into v2 work or substrate consolidation briefs) | Per Alex's §3. |
No new briefs surfaced. Cartography work is well-named.
§3.11 Domain — OBSERVABILITY / IRSL¶
IS¶
Per ADR-017 (bus pattern's scheduled-bus subtype) + standing-rules.md (queue-based chain dispatch) + IRSL pattern:
- Every cron-driven sync worker writes to its
_ingest_runstable per the IRSL pattern - Run-status logging consistent across workers (cron / queue / atm run types)
- Bus-level instrumentation (per ADR-017): metrics, logging, error reporting applied at bus level, propagating to consumers
CURRENT¶
- IRSL pattern operational across 8
_ingest_runstables inrto-nrt-db,rto-ops-db,rto-radar-db,engine-db-oc(Alex's §11). - Watch carry-forwards from Alex's §11 — 7 specific cron firings to verify across 2026-05-26 to 2026-06-01 windows.
- Sync email notifications: Sunday
tga-sync, Mondaycricos-syncper standing-rules.md ("Sync notification emails"). - Observatory drawer on admin dashboard surfaces packaging pipeline status (standing-rules.md).
- OPS-DB-STAGING-IRSL-SCHEMA-PARITY-01 — staging IRSL schemas not mirrored from prod yet (Alex's §7, ~5 min brief).
- TELEMETRY-SURFACE-01 — filed (per prior memory).
- Enrichment coverage — 99.4% of RTOs unenriched (per standing-rules.md). BACKFILL-01 is the fix.
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 11.1 | IRSL pattern as principle | Right | — | No work. |
| 11.2 | IRSL coverage across sync workers | Right (8 tables) | — | Maintain. |
| 11.3 | Staging IRSL schema parity | Wrong | OPS-DB-STAGING-IRSL-SCHEMA-PARITY-01 (~5 min) | Quick win. |
| 11.4 | Bus-level instrumentation (per ADR-017) | Wrong — not yet implemented | (After BUS-PATTERN-CF-IMPLEMENTATION-DECISION-01) | Implementation depends on bus decision. |
| 11.5 | Telemetry surface | Pending | TELEMETRY-SURFACE-01 (filed) | Per existing queue. |
| 11.6 | Enrichment backfill | Wrong (99.4% unenriched) | BACKFILL-01 (per standing-rules.md) | One-shot script via /api/enrich. |
| 11.7 | Watch carry-forwards (7 cron firings) | Pending verification | — | Verify per Alex's §11 windows; surface findings. |
| 11.8 | Observatory drawer (packaging pipeline) | Right | — | Maintain. |
| 11.9 | Cross-flow telemetry (bus pattern dependent) | Wrong (not yet possible) | (Bus pattern implementation) | After bus work. |
No new briefs surfaced. Observability is well-covered by existing queue; the limiting factor is bus pattern implementation.
§3.12 Domain — INGESTED CORPORA¶
IS¶
Per ADR-002 + ADR-003 + ADR-004 + ADR-005 + spine §4:
- Substrate is the moat. Ingestion is foundational work, not feature support.
- Hoover-mentality on ingestion — calibrated to access-window availability, not current-feature need.
- Pristine-source on Layer 1 — never modified.
- Recompute-as-needed on Layer 2.
- Four moats: operational, continuity, historical, analytical.
- TGA Swagger as apex source. Hoover beyond what TGA's published reports surface.
- Sources mirrored: TGA, yourcareer, ABS (OSL + IVI), funding/tender data, others opportunistic.
CURRENT¶
- TGA mirror operational with hoover-mentality completeness. Substrate likely holds more than TGA's published reports surface (spine §4).
- yourcareer ingest — state needs Alex confirmation (freshness, completeness).
- ABS OSL feed — sync state per standing-rules.md cron table.
- ABS IVI feed — sync state per standing-rules.md cron table.
- Government tender data (AusTender) —
rto-tender-synccron at 08:00 UTC daily (Alex's §11). - KN-15128 sacred rule — 15,128 enriched rows immutable.
- Enrichment coverage — 99.4% of RTOs currently unenriched (BACKFILL-01 fix).
- TGA upstream intelligence capture — pending (Alex's §7 TGA-UPSTREAM-INTELLIGENCE-CAPTURE-01).
- TGA Swagger vs reports delta — pending audit (Alex's §7 TGA-SWAGGER-VS-REPORTS-DELTA-AUDIT-01).
- INGESTED-SUBSTRATE-INVENTORY-01 — canonical inventory pending (Alex's §7).
GAP¶
| # | Item | Status | Brief | Action |
|---|---|---|---|---|
| 12.1 | Hoover-mentality / pristine-source / recompute as principles | Right | — | No work. |
| 12.2 | TGA mirror integrity | Right | TGA-MIRROR-CORPUS-AUDIT-01 (filed per Alex's §7) | Audit confirms; maintenance only. |
| 12.3 | TGA Swagger vs reports delta | Unknown | TGA-SWAGGER-VS-REPORTS-DELTA-AUDIT-01 (filed) | Audit. |
| 12.4 | TGA upstream intelligence capture | Pending | TGA-UPSTREAM-INTELLIGENCE-CAPTURE-01 (filed) | Per queue. |
| 12.5 | yourcareer freshness/completeness | needs Alex confirmation | — | Folds into INGESTED-SUBSTRATE-INVENTORY-01. |
| 12.6 | ABS OSL/IVI freshness | needs Alex confirmation + cron watch | — | Per Alex's §11 watches. |
| 12.7 | Tender data freshness | Per Alex's §11 watch (08:00 daily) | — | Confirm via watch. |
| 12.8 | KN-15128 immutability | Right (sacred) | — | No work; sacred. |
| 12.9 | Enrichment backfill | Wrong (99.4% gap) | BACKFILL-01 | One-shot. |
| 12.10 | Canonical ingested substrate inventory | Pending | INGESTED-SUBSTRATE-INVENTORY-01 (filed) | Per queue. |
| 12.11 | Other opportunistic sources (per spine §4) | needs Alex confirmation which other sources are ingested | — | Folds into inventory brief. |
No new briefs surfaced. Ingestion work is well-named; the inventory brief is the load-bearing next step.
§4. Gap inventory¶
Collapsed from §3 GAP tables across all 12 domains. Classified by status:
- A — Already queued (existing brief covers cleanly)
- B — Partially queued (existing brief covers part; needs re-scoping)
- C — Not queued (new brief surfaced by recon)
- D — Resolved by canonical work (was a gap; foundation now answers it)
- E — Unknown (audit needed before classifying)
Category A — Already queued (existing briefs cover cleanly)¶
| # | Item | Brief |
|---|---|---|
| A1 | Canon vs ADR-018 four tensions | CANON-VS-ADR-018-RECONCILIATION-01 |
| A2 | Worker naming conformance | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 1 |
| A3 | DB naming conformance (asymmetric cost) | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 2 + 3 |
| A4 | Cartography v1 → v2 | CARTOGRAPHY-V2-CONVENTION-CONFORMING-01 |
| A5 | Module-level cartography | CARTOGRAPHY-MODULE-DRILLDOWN-01 |
| A6 | MANDARIN finishing | MANDARIN-VIOLATION-01b, 01c |
| A7 | OPS-DB staging IRSL parity | OPS-DB-STAGING-IRSL-SCHEMA-PARITY-01 |
| A8 | Four identity conventions | IDENTITY-MODEL-RATIONALISATION-01 |
| A9 | Cross-DB user/product/passkey dupes | CROSS-DB-DUPLICATE-CONSOLIDATION-01 |
| A10 | Orgs UCCA duplicate | ORGS-DUPLICATE-UCCA-RECORD-CLEANUP-01 |
| A11 | REGULATORY-EVENTS-TENANT-ISOLATION | REGULATORY-EVENTS-TENANT-ISOLATION-01 |
| A12 | Stripe + QB ADR-015 + ADR-019 conformance | EXTERNAL-WRAPPER-CONFORMANCE-01 |
| A13 | SMS audit (Twilio scaffolding) | SMS-CURRENT-STATE-AUDIT-01 |
| A14 | Billing vendor reconciliation | BILLING-VENDOR-RECONCILIATION-01 |
| A15 | Bus pattern CF-primitive decision | BUS-PATTERN-CF-IMPLEMENTATION-DECISION-01 |
| A16 | Studio session-completion gap | STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 |
| A17 | apps/site product surface decision | APPS-SITE-PRODUCT-SURFACE-DECISION-01 |
| A18 | TGA mirror corpus audit | TGA-MIRROR-CORPUS-AUDIT-01 |
| A19 | TGA upstream intelligence capture | TGA-UPSTREAM-INTELLIGENCE-CAPTURE-01 |
| A20 | TGA Swagger vs reports delta | TGA-SWAGGER-VS-REPORTS-DELTA-AUDIT-01 |
| A21 | Ingested substrate inventory | INGESTED-SUBSTRATE-INVENTORY-01 |
| A22 | Credential provider decision | CREDENTIAL-PROVIDER-DECISION-01 |
| A23 | Telemetry surface | TELEMETRY-SURFACE-01 |
| A24 | Enrichment backfill | BACKFILL-01 |
| A25 | Terraform v5 reconciliation | TERRAFORM-V5-RECONCILIATION-01 (per prior memory) |
| A26 | Recovery model reconciliation | RECOVERY-MODEL-RECONCILIATION-01 (per prior memory) |
| A27 | Terraform import rebase pattern | TERRAFORM-IMPORT-REBASE-PATTERN-01 (per prior memory) |
Category B — Partially queued (scope expansion already captured in foundation)¶
| # | Item | Brief | Scope note |
|---|---|---|---|
| B1 | Admin auth model + credential cartography | ADMIN-AUTH-MODEL-RECONCILIATION-01 | Scope expanded per ADR-019 to include credential-cartography surface design |
| B2 | Wrapper conformance + env-neutrality | EXTERNAL-WRAPPER-CONFORMANCE-01 | Scope extended per ADR-019 to enforce environment-neutral wrapper code |
Category C — Not queued (new briefs surfaced by recon)¶
| # | Item | Proposed brief | Size |
|---|---|---|---|
| C1 | Spine §9 four-vs-five segment drift | SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01 | 15 min — fold into A1 (canon reconciliation) if scope permits |
| C2 | Apps-layer + route + secret naming scope | APPS-AND-ROUTE-NAMING-SCOPE-DECISION-01 | 30 min decision brief |
| C3 | OPS-DB split shape decision | OPS-DB-SPLIT-SHAPE-DECISION-01 | Decision brief; prereq to execution briefs |
| C4 | EXT-API RULE compliance audit | EXT-API-RULE-COMPLIANCE-AUDIT-01 | Audit which integrations have docs/ops/ reference docs |
| C5 | Inbound webhook bus audit | INBOUND-WEBHOOK-BUS-AUDIT-01 | Audit before designing canonical bus |
| C6 | Public curated showcase implementation | PUBLIC-CURATED-SHOWCASE-IMPLEMENTATION-01 | Tim's recent product decision needs brief shape |
| C7 | Second-instance pattern audit from OPS-DB-CONTENT-AUDIT-01 close | SECOND-INSTANCE-PATTERN-AUDIT-01 | Extract from audit close report; may surface additional consolidation briefs |
| C8 | Recon-pass-on-foundation-shift standing rule | (Standing rule update, not brief) | Add RECON-PASS-ON-FOUNDATION-SHIFT to standing-rules.md |
| C9 | METADATA-RECONCILIATION-AT-COMMIT standing rule | (Standing rule update, not brief) | Concrete evidence from C1 supports the rule |
| C10 | Governance position for recon docs | (Standing-rules update) | Add position 4b for recon documents |
Category D — Resolved by canonical work¶
| # | Item | Resolution |
|---|---|---|
| D1 | Asymmetric rename cost verification | Canonical in ADR-018 §"The rename has asymmetric substrate cost" |
| D2 | qb-reconcile, stripe-* classification |
Resolved by ADR-018 worked examples |
| D3 | Geocoder utility status | Confirmed by ADR-018 worked examples |
| D4 | Cellcast as canonical first wrapper | Captured in ADR-014 |
| D5 | Federation as future credential type | Captured in spine §7 + ADR-006 |
Category E — Unknown (audit needed)¶
| # | Item | Resolution path |
|---|---|---|
| E1 | Worker/DB conformance counts | Path (a): Alex confirmation via close-report cadence |
| E2 | KN-15128 incidental write audit | If any doubt, small audit; otherwise trust sacred discipline |
| E3 | Layer 2 derivation logic in version control | Audit if not already verified |
| E4 | DNS-level admin. configuration on both TLDs |
Quick check |
| E5 | Substrate-level secret scoping completeness | Folds into ADMIN-AUTH-MODEL-RECONCILIATION-01 |
| E6 | Visual admin-surface broadcasting current state | Folds into ADMIN-AUTH-MODEL-RECONCILIATION-01 |
| E7 | Token state visibility (timestamps, expiry) | Folds into ADMIN-AUTH-MODEL-RECONCILIATION-01 |
| E8 | Resend wrapper conformance | Folds into EXTERNAL-WRAPPER-CONFORMANCE-01 |
| E9 | TGA / yourcareer / ABS / tender wrapper conformance | Folds into INGESTED-SUBSTRATE-INVENTORY-01 |
| E10 | EXT-API RULE compliance per integration | Folds into C4 (EXT-API-RULE-COMPLIANCE-AUDIT-01) |
| E11 | Provenance markers in client file schema | Audit; may surface design brief |
| E12 | Signup flow current state (Type 1/2/3) | Audit before signup design work |
| E13 | CEO notification flow (ADR-012) | Audit; likely implementation brief |
| E14 | Webhook handler current structure | Folds into C5 (INBOUND-WEBHOOK-BUS-AUDIT-01) |
| E15 | Internal bus (worker-to-worker) patterns | Audit; consolidate if recurring |
| E16 | InstaLearn deployment state | Quick check |
| E17 | Module spec versions current | Audit; refresh stale |
| E18 | WS-PRODUCT-01 vs module spec coherence | Audit during module-work recon |
| E19 | Map updates in same commit as substrate | Discipline check; reinforced by C9 |
| E20 | Map rendering at docs.rtopacks.com.au |
Quick check |
| E21 | yourcareer / ABS freshness state | Folds into INGESTED-SUBSTRATE-INVENTORY-01 |
| E22 | Other opportunistic ingested sources | Folds into INGESTED-SUBSTRATE-INVENTORY-01 |
Inventory totals¶
- A (already queued): 27 items
- B (partially queued — scope expansion): 2 items
- C (new briefs surfaced): 10 items (7 briefs + 3 standing-rules updates)
- D (resolved by canonical work): 5 items
- E (audit needed): 22 items (most fold into existing briefs as confirmation steps)
The ratio is informative: existing queue covers most of the work cleanly (A = 27). The recon's value is in surfacing 7 new briefs + 3 standing-rules updates, resolving 5 prior unknowns, and identifying 22 audit-confirmation items that path (a) processes via Alex's close-report cadence.
§5. Re-sequenced queue¶
Ordered traversal of the gap inventory, driven by:
- Foundation-prerequisite work — unblocks everything downstream
- Structural unblockers — unblocks multiple downstream briefs
- Substrate stability — should land while touched substrate is well-understood
- Opportunistic — small clean briefs without strong dependencies
- Deferred — correctly queued but not yet sequenced
Tier 1 — Foundation work (immediate)¶
| Order | Brief | Why first | Source |
|---|---|---|---|
| 1 | CANON-VS-ADR-018-RECONCILIATION-01 | Unblocks all naming-touching work | Alex's §8 (tomorrow's first substrate work) |
| 2 | SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01 | Fold into #1 or run alongside | C1 |
| 3 | METADATA-RECONCILIATION-AT-COMMIT standing rule | Locks in discipline that prevents drift like #2 from accumulating | C9 |
| 4 | RECON-PASS-ON-FOUNDATION-SHIFT standing rule | Codifies this recon's method | C8 |
| 5 | Recon document governance position 4b in standing-rules | Places recon documents in governance hierarchy | C10 |
Tier 2 — Structural unblockers (after Tier 1)¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 6 | IDENTITY-MODEL-RATIONALISATION-01 | Step 0 for OPS-DB split; blocks several downstream identity briefs | Alex's §7 |
| 7 | BUS-PATTERN-CF-IMPLEMENTATION-DECISION-01 | Decision; unblocks bus implementation work | Alex's §7 |
| 8 | OPS-DB-SPLIT-SHAPE-DECISION-01 | Decision; unblocks split execution | C3 |
| 9 | CREDENTIAL-PROVIDER-DECISION-01 | Unblocks ADMIN-AUTH-MODEL-RECONCILIATION-01 | Spine §7 |
| 10 | APPS-AND-ROUTE-NAMING-SCOPE-DECISION-01 | Names boundary of ADR-018 scope | C2 |
Tier 3 — Substrate stability work (after Tier 2)¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 11 | ADMIN-AUTH-MODEL-RECONCILIATION-01 | Major design work; requires CREDENTIAL-PROVIDER-DECISION-01 first | A/B1 |
| 12 | EXTERNAL-WRAPPER-CONFORMANCE-01 | Retroactive conformance for Stripe + QB | A12/B2 |
| 13 | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 1 | Worker renames; cheap; after canon reconciliation | Alex's §7 |
| 14 | EXT-API-RULE-COMPLIANCE-AUDIT-01 | Audit reference docs per integration | C4 |
| 15 | INBOUND-WEBHOOK-BUS-AUDIT-01 | Audit before bus design | C5 |
| 16 | SECOND-INSTANCE-PATTERN-AUDIT-01 | Extract from OPS-DB audit close; may surface additional consolidation work | C7 |
| 17 | SMS-CURRENT-STATE-AUDIT-01 | Twilio scaffolding audit before Cellcast module | A13 |
Tier 4 — Module + product work (concurrent with Tier 3)¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 18 | STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 | Elevated priority — must resolve before product demonstration | A16 |
| 19 | APPS-SITE-PRODUCT-SURFACE-DECISION-01 | Open decision; informs public surface implementation | A17 |
| 20 | PUBLIC-CURATED-SHOWCASE-IMPLEMENTATION-01 | After #19 | C6 |
| 21 | (SMS module brief) | After SMS-CURRENT-STATE-AUDIT-01 | Implied by Alex's §7 |
Tier 5 — Opportunistic small briefs¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 22 | OPS-DB-STAGING-IRSL-SCHEMA-PARITY-01 | ~5 min; quick win | Alex's §7 |
| 23 | ORGS-DUPLICATE-UCCA-RECORD-CLEANUP-01 | Small cleanup | Alex's §7 |
| 24 | BACKFILL-01 | One-shot script | Standing-rules.md |
| 25 | BILLING-VENDOR-RECONCILIATION-01 | Prereq to billing migration | Alex's §7 |
Tier 6 — Ingested corpora work¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 26 | INGESTED-SUBSTRATE-INVENTORY-01 | Canonical inventory; informs subsequent corpora work | Alex's §7 |
| 27 | TGA-MIRROR-CORPUS-AUDIT-01 | Confirm integrity | Alex's §7 |
| 28 | TGA-SWAGGER-VS-REPORTS-DELTA-AUDIT-01 | Audit delta | Alex's §7 |
| 29 | TGA-UPSTREAM-INTELLIGENCE-CAPTURE-01 | Per queue | Alex's §7 |
Tier 7 — Naming + cartography completion (after Tier 3)¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 30 | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 2 | Opportunistic DB renames; bundles with OPS-DB split | Alex's §7 |
| 31 | CARTOGRAPHY-V2-CONVENTION-CONFORMING-01 | After first substrate-changing brief | Alex's §7 |
| 32 | WORKER-AND-DB-NAMING-CONFORMANCE-01 Phase 3 | Deliberate remaining DB renames | Alex's §7 |
| 33 | CARTOGRAPHY-MODULE-DRILLDOWN-01 | Module-level cartography | Alex's §7 |
Tier 8 — Post-foundation cleanup + identity¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 34 | CROSS-DB-DUPLICATE-CONSOLIDATION-01 (3 sub-briefs) | After IDENTITY-MODEL-RATIONALISATION-01 | Alex's §7 |
| 35 | MANDARIN-VIOLATION-01b | Continue MANDARIN finishing | Prior memory |
| 36 | MANDARIN-VIOLATION-01c | Continue MANDARIN finishing | Prior memory |
| 37 | TELEMETRY-SURFACE-01 | After bus pattern implementation begins | Prior memory |
Tier 9 — Infrastructure reconciliation¶
| Order | Brief | Why | Source |
|---|---|---|---|
| 38 | TERRAFORM-V5-RECONCILIATION-01 | 78 held writes | Prior memory |
| 39 | TERRAFORM-IMPORT-REBASE-PATTERN-01 | Future major-version upgrades | Prior memory |
| 40 | RECOVERY-MODEL-RECONCILIATION-01 | Consolidate four-tier recovery model | Prior memory |
Deferred (post-revenue)¶
| Order | Brief | Why deferred |
|---|---|---|
| ∞ | REGULATORY-EVENTS-TENANT-ISOLATION-01 | Cross-tenant query patterns; post-revenue priority |
| ∞ | Audit-trail-of-credential-changes brief | Per ADR-019; not blocking for current operations |
Sequencing notes¶
- The Tim/Alex/Claude drip rate determines actual throughput. Brief drip rule remains in force; one brief in flight at a time.
- Tiers can be partially concurrent. Tier 1 + Tier 4 (Studio session-completion audit) could run alongside. Tier 5 (opportunistic small) can interleave anywhere.
- STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 has elevated priority per prior memory — must resolve before product demonstration. May want to bring forward into Tier 1 if a demo is on the horizon.
- The "Cellcast SMS module" brief is implied but not formally named. Worth naming once SMS-CURRENT-STATE-AUDIT-01 closes.
- Recon-pass-on-foundation-shift standing rule (Tier 1) locks in this method for future foundation shifts.
§6. Delta document¶
The auditable record of what changed between yesterday's implicit queue and today's explicit queue.
Collapsed¶
None. No briefs in the existing queue were rendered redundant by the new foundation. The foundation tightened the lens but did not collapse work.
Re-scoped¶
| Brief | Scope change | Source |
|---|---|---|
| ADMIN-AUTH-MODEL-RECONCILIATION-01 | Expanded to include credential-cartography surface design | Per ADR-019; captured in Alex's §5 |
| EXTERNAL-WRAPPER-CONFORMANCE-01 | Extended to enforce environment-neutral wrapper code | Per ADR-019; captured in Alex's §5 |
| WORKER-AND-DB-NAMING-CONFORMANCE-01 | Three-phase structure formalised (workers immediate, DB opportunistic, deliberate remainder) | Per ADR-018 v4 asymmetric-cost recognition; captured in Alex's §6 |
| DB-NAMING-LEGACY-oc-suffix-01 | Subsumed into WORKER-AND-DB-NAMING-CONFORMANCE-01 | Per Alex's §7 |
Added (new briefs surfaced by recon)¶
| Brief | Source |
|---|---|
| SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01 | C1 — spine §9 four-vs-five segment drift |
| APPS-AND-ROUTE-NAMING-SCOPE-DECISION-01 | C2 — boundary of ADR-018 scope |
| OPS-DB-SPLIT-SHAPE-DECISION-01 | C3 — decision held; needs brief shape |
| EXT-API-RULE-COMPLIANCE-AUDIT-01 | C4 — reference doc audit per integration |
| INBOUND-WEBHOOK-BUS-AUDIT-01 | C5 — audit before canonical bus design |
| PUBLIC-CURATED-SHOWCASE-IMPLEMENTATION-01 | C6 — Tim's product decision needs brief shape |
| SECOND-INSTANCE-PATTERN-AUDIT-01 | C7 — extract from OPS-DB audit close report |
Added (standing-rules updates)¶
| Item | Source |
|---|---|
| METADATA-RECONCILIATION-AT-COMMIT (rule) | C9 — concrete evidence from spine §9 drift |
| RECON-PASS-ON-FOUNDATION-SHIFT (rule) | C8 — codifies this recon's method |
| Recon documents at governance position 4b | C10 — places artefact class in hierarchy |
Confirmed (existing briefs validated against new foundation)¶
All 27 Category A briefs from §4 confirmed against the new foundation. The existing queue is largely well-scoped; the new foundation tightened the lens without requiring re-scoping of most work.
Unknown items pending path (a) confirmation¶
22 Category E items from §4. Path (a) processes these via Alex's close-report cadence as work proceeds.
Resolved by canonical work (no longer gaps)¶
5 Category D items from §4. Foundation now answers what was previously unknown.
Net inventory shift¶
- Before recon: ~30+ briefs in implicit queue with mixed scope-state and pre-foundation assumptions
- After recon: 27 Category A confirmed + 2 Category B with explicit scope expansion + 7 new briefs added + 3 standing-rules updates + 22 path-(a) confirmation items
The queue grew by 7 briefs and 3 rule updates, tightened scope on 2 existing briefs, and surfaced 22 confirmation items. No briefs collapsed.
§7. Discipline observations from the recon¶
Four observations worth carrying forward, surfaced by the act of running the recon itself.
7.1 Canonical-doc drift is real and silent¶
The spine §9 four-segment vs ADR-018 v4 five-segment finding (item 1.2 / C1) is concrete evidence that canonical docs can drift from each other even when refined the same day. The METADATA-RECONCILIATION-AT-COMMIT candidate standing rule directly addresses this failure mode. The recon strengthens the case for codifying it.
7.2 The recon validates the canonical foundation as well as the queue¶
By forcing a domain-by-domain walk through the foundation, the recon surfaced one canonical-doc drift item (spine §9) and confirmed coherence across the rest of the foundation. The act of running the recon is itself a discipline check on the canonical state, not just on the queue.
7.3 Path (a) for Alex confirmation works structurally¶
22 Category E items are absorbed by path (a) without disrupting any single brief's cadence. Each item routes to the natural close-report touchpoint of an existing or new brief. The recon does not need a separate Alex-confirmation cycle; the items distribute across the brief queue.
7.4 Most of the existing queue holds up under the new foundation¶
27 Category A items vs 7 Category C items is roughly 4:1 confirmation-to-new ratio. The existing queue was well-scoped at filing time. The recon's value is not "the queue was wrong" — it is "validate the queue against a new foundation and surface the small handful of items that the new foundation creates or resolves."
This ratio is itself a useful diagnostic: if a future recon produces a 1:1 or worse ratio of new-to-existing, that signals either the foundation moved more substantially than this one or the queue was filed less rigorously than this one.
§8. Open questions and follow-ups¶
-
Tim review of full recon before any briefs drip. Specific items to validate: Tier 1 sequencing (does canon reconciliation truly come first vs spine §9 alignment or standing-rules updates first); Tier 4 elevated-priority decision on Studio session-completion (does it pull forward into Tier 1 or sit in Tier 4); whether STUDIO-SESSION-COMPLETION-PATH-AUDIT-01 needs to pull forward depending on demo timeline.
-
Alex pressure-test of CURRENT and GAP entries marked "needs Alex confirmation" — via path (a) close-report cadence rather than batch review.
-
METADATA-RECONCILIATION-AT-COMMIT conversation — codify as standing rule. Spine §9 drift is the concrete evidence supporting it.
-
Recon governance position decision — confirm position 4b for recon documents, update standing-rules.md accordingly.
-
The "Cellcast SMS module" brief is implied but not formally filed. Worth filing once SMS-CURRENT-STATE-AUDIT-01 closes.
-
Tier 1 vs Tier 4 trade-off: foundation work (standing-rules updates, naming alignments) vs product work (Studio session-completion audit). Depends on product-demonstration timeline. Tim's call.
§9. Recommendation¶
The recon validates that the existing brief queue is largely well-scoped against the new canonical foundation. The recon also surfaces a small set of new work (7 briefs + 3 standing-rules updates) that should be incorporated.
Recommended next actions, in order:
- Tim reviews this recon for sequencing validation and Tier 1 vs Tier 4 priority call.
- Recon goes to canonical location at
docs/docs/ops/recon/RECON-FOUNDATION-LENS-01.mdonce validated. - Recon goes to Alex for substrate-state pressure-testing via path (a). Confirmation items resolve through close-report cadence.
- First brief drips: CANON-VS-ADR-018-RECONCILIATION-01 per Alex's §8 (Tim's pre-existing decision). SPINE-SECTION-9-NAMING-CONVENTION-ALIGN-01 folds in or runs alongside.
- Standing-rules updates land at the appropriate moment — likely after canon reconciliation closes, since it touches naming convention directly.
- Tier 2 structural unblockers drip per the order in §5.
This re-sequenced queue is the working brief queue from this point forward. Briefs filed before this recon are validated; briefs filed by this recon are added; briefs not in this recon's queue are either deferred or require re-evaluation against the lens before filing.
Changelog¶
- v1 (2026-05-27 morning) — initial draft. Anchored against stale project-files content (ADRs 1-13, pre-v2 spine, pre-governance-hierarchy standing-rules). Method shape sound but specifics thin. Preserved at
RECON-FOUNDATION-LENS-01-v1-stale.mdas evidence of the corpus-discipline failure (working from stale docs). - v2 (2026-05-27, this version) — full recon pass. Re-anchored against current canonical foundation: client-spine v2 (417 lines), architecture-decisions v4 (646 lines, ADRs 1-19), standing-rules post-governance-hierarchy (615 lines), Alex's Time Machine for Claude (271 lines). All 12 domains walked. §4 gap inventory assembled. §5 re-sequenced queue produced. §6 delta document recorded.
End of RECON-FOUNDATION-LENS-01. Method validated by Tim review; recon validated by Alex via path (a) close-report cadence; first brief drips per §5 Tier 1.