{
  "$schema": "https://ndcodex.com/schemas/object/v1.json",
  "id": "codex://object/codex-archive-system-v3-1-build-notes",
  "archive_id": "codex-archive-system-v3-1-build-notes",
  "slug": "codex-archive-system-v3-1-build-notes",
  "url": "https://ndcodex.com/objects/codex-archive-system-v3-1-build-notes/",
  "type": "codex",
  "object_form": null,
  "title": "Codex Archive System V3.1 Build Notes",
  "summary": "v3.1 locks mobile reading surfaces to the viewport, improves feed legibility, and keeps the active inbox honest.",
  "content_text": "v3.1 notes are now extended by Codex Archive System v3.2 Fragment Feed Notes.\n\nUse v3.1 as runtime cleanup context and v3.2 for current feed/fragments behavior.\n\nv3.1 is a runtime polish and operations cleanup patch layered on v3+.\n\nOperator value prop:\n\nShip clean and stay clean: mobile reading stays locked in-frame, and the active inbox reflects real pending work.\n\nWork chunks and wins:\n\nMobile overflow containment\n\nValue prop: No horizontal drift on feed/graph mobile sessions, so reading stays anchored.\n\nAdd horizontal overflow guards at global layout level.\n\nCollapse graph list grid earlier on small screens to prevent width blowout.\n\nFeed readability consistency\n\nValue prop: Operators can scan atlas/meta labels at a glance without contrast strain.\n\nRaise low-contrast footer/atlas labels from dim token usage to readable mid token usage.\n\nNormalize small UI labels toward shared 12px conventions where intended.\n\nHonest inbox activation\n\nValue prop: The human operator can move from detected source to published object without mixing live work and completed work.\n\nName the operator loop explicitly: Talk -> Confirm -> Hand-off -> Ping-back.\n\nAdd scripts/finalize-approved-ready.mjs so post-confirmation work can run as one system handoff.\n\nAdd scripts/promote-ready.mjs for the deliberate inbox/ready -> canonical publish step.\n\nRequire explicit operator approval via --approve before canonical files are written.\n\nRequire an approval note and append promotion records to logs/promotion-log.ndjson.\n\nRequire --approve-all for batch promotion so one broad command cannot masquerade as item-level review.\n\nAdd scripts/reconcile-inbox.mjs to archive ready drafts once they have canonical objects/ counterparts.\n\nExtend scripts/cleanup-inbox-drop.mjs with --auto-published for source-payload sweeps discoverable from ready/archive-ready drafts.\n\nWrite cleanup audit records to both inbox/archive/ready/cleanup-log.ndjson and inbox/archive/drop/cleanup-log.ndjson.\n\nKeep active inbox/ready/ limited to real pending review.\n\nOperator shorthand: keeping the beast fed :) and not chewing cud\n\nNo schema expansion is proposed in v3.1.\n\nNo new object type is proposed in v3.1.",
  "content_markdown": "v3.1 notes are now extended by [Codex Archive System v3.2 Fragment Feed Notes](/objects/codex-archive-system-v3-2-fragment-feed-notes).\nUse v3.1 as runtime cleanup context and v3.2 for current feed/fragments behavior.\n\nv3.1 is a runtime polish and operations cleanup patch layered on v3+.\n\nOperator value prop:\n- Ship clean and stay clean: mobile reading stays locked in-frame, and the active inbox reflects real pending work.\n\nWork chunks and wins:\n\n1. Mobile overflow containment\n   Value prop: No horizontal drift on feed/graph mobile sessions, so reading stays anchored.\n   - Add horizontal overflow guards at global layout level.\n   - Collapse graph list grid earlier on small screens to prevent width blowout.\n\n2. Feed readability consistency\n   Value prop: Operators can scan atlas/meta labels at a glance without contrast strain.\n   - Raise low-contrast footer/atlas labels from dim token usage to readable mid token usage.\n   - Normalize small UI labels toward shared 12px conventions where intended.\n\n3. Honest inbox activation\n   Value prop: The human operator can move from detected source to published object without mixing live work and completed work.\n   - Name the operator loop explicitly: `Talk -> Confirm -> Hand-off -> Ping-back`.\n   - Add `scripts/finalize-approved-ready.mjs` so post-confirmation work can run as one system handoff.\n   - Add `scripts/promote-ready.mjs` for the deliberate `inbox/ready` -> canonical publish step.\n   - Require explicit operator approval via `--approve` before canonical files are written.\n   - Require an approval note and append promotion records to `logs/promotion-log.ndjson`.\n   - Require `--approve-all` for batch promotion so one broad command cannot masquerade as item-level review.\n   - Add `scripts/reconcile-inbox.mjs` to archive ready drafts once they have canonical `objects/` counterparts.\n   - Extend `scripts/cleanup-inbox-drop.mjs` with `--auto-published` for source-payload sweeps discoverable from ready/archive-ready drafts.\n   - Write cleanup audit records to both `inbox/archive/ready/cleanup-log.ndjson` and `inbox/archive/drop/cleanup-log.ndjson`.\n   - Keep active `inbox/ready/` limited to real pending review.\n   - Operator shorthand: `keeping the beast fed :) and not chewing cud`\n\nNo schema expansion is proposed in v3.1.\nNo new object type is proposed in v3.1.",
  "author": {
    "id": "nathan-davis",
    "name": "Nathan Davis",
    "designation": "Archive Operator",
    "role": "Archive Operator",
    "handle": "@nathandavis",
    "avatar": "/media/people/nathan-davis.jpg",
    "bio": "Designer, builder, and curator of the Codex Archive."
  },
  "contributors": [
    {
      "id": "nathan-davis",
      "name": "Nathan Davis",
      "designation": "Archive Operator",
      "role": "Archive Operator",
      "handle": "@nathandavis",
      "avatar": "/media/people/nathan-davis.jpg",
      "bio": "Designer, builder, and curator of the Codex Archive."
    }
  ],
  "date_published": "2026-03-08T14:55:00.000Z",
  "date_modified": "2026-03-08T14:55:00.000Z",
  "status": "published",
  "visibility": "public",
  "language": "en-US",
  "axes": {
    "scale": null,
    "depth": null,
    "focus": null,
    "function": null
  },
  "themes": [
    "systems",
    "architecture",
    "methodology",
    "maintenance",
    "signal"
  ],
  "constellations": [
    "Cascade Psalms"
  ],
  "tags": [
    "systems",
    "architecture",
    "methodology",
    "maintenance",
    "signal"
  ],
  "keywords": [
    "Codex",
    "systems",
    "architecture",
    "methodology",
    "maintenance",
    "signal",
    "Cascade Psalms"
  ],
  "relations": [
    {
      "kind": "related",
      "target": "codex://object/codex-archive-system-v3-plus-notes",
      "slug": "codex-archive-system-v3-plus-notes",
      "url": "https://ndcodex.com/objects/codex-archive-system-v3-plus-notes/"
    },
    {
      "kind": "related",
      "target": "codex://object/codex-archive-system-v3-notes",
      "slug": "codex-archive-system-v3-notes",
      "url": "https://ndcodex.com/objects/codex-archive-system-v3-notes/"
    },
    {
      "kind": "related",
      "target": "codex://object/go-live-milestone",
      "slug": "go-live-milestone",
      "url": "https://ndcodex.com/objects/go-live-milestone/"
    },
    {
      "kind": "related",
      "target": "codex://object/signal-descent-003",
      "slug": "signal-descent-003",
      "url": "https://ndcodex.com/objects/signal-descent-003/"
    },
    {
      "kind": "related",
      "target": "codex://object/signal-descent-004",
      "slug": "signal-descent-004",
      "url": "https://ndcodex.com/objects/signal-descent-004/"
    },
    {
      "kind": "related",
      "target": "codex://object/reduce-novelty-before-care",
      "slug": "reduce-novelty-before-care",
      "url": "https://ndcodex.com/objects/reduce-novelty-before-care/"
    },
    {
      "kind": "related",
      "target": "codex://object/artifact-jsa-collage-001",
      "slug": "artifact-jsa-collage-001",
      "url": "https://ndcodex.com/objects/artifact-jsa-collage-001/"
    },
    {
      "kind": "related",
      "target": "codex://object/jsa-collage-evolution-001",
      "slug": "jsa-collage-evolution-001",
      "url": "https://ndcodex.com/objects/jsa-collage-evolution-001/"
    },
    {
      "kind": "related",
      "target": "codex://object/scripture-with-machines",
      "slug": "scripture-with-machines",
      "url": "https://ndcodex.com/objects/scripture-with-machines/"
    },
    {
      "kind": "dependency",
      "target": "codex://object/codex-archive-system-v3-plus-notes",
      "slug": "codex-archive-system-v3-plus-notes",
      "url": "https://ndcodex.com/objects/codex-archive-system-v3-plus-notes/"
    },
    {
      "kind": "dependency",
      "target": "codex://object/go-live-milestone",
      "slug": "go-live-milestone",
      "url": "https://ndcodex.com/objects/go-live-milestone/"
    },
    {
      "kind": "connection",
      "target": "codex://object/codex-archive-system-v3-plus-notes",
      "slug": "codex-archive-system-v3-plus-notes",
      "url": "https://ndcodex.com/objects/codex-archive-system-v3-plus-notes/",
      "role": "previous version",
      "display": "feature"
    },
    {
      "kind": "connection",
      "target": "codex://object/codex-archive-system-v3-2-fragment-feed-notes",
      "slug": "codex-archive-system-v3-2-fragment-feed-notes",
      "url": "https://ndcodex.com/objects/codex-archive-system-v3-2-fragment-feed-notes/",
      "role": "next update",
      "display": "inline"
    }
  ],
  "media": [],
  "capture": null
}