Urgent.News

What's breaking now, across thousands of outlets.

Tech

¿Por qué osFoundry envía el esquema del registro con cada página que lista Codex?

Estas son las herramientas de record channel que recibe una conexión de Codex CLI desde osFoundry , tal como las lista el endpoint MCP público. Se obtuvieron con un tools/list sin autenticar el 2026-11-09 y se recortaron a los campos que importan aquí: { "name" : "list_record_items" , "description" : "List the schema and a bounded page of item previews from one granted record channel. Use…

Original Spanish Read in English

The osFoundry record schema is included with every page listed by Codex, as indicated by the values field in the tool's schema. This schema cannot specify which keys a channel has, which fields are select options, or what can be contained within points, as these details vary between channels and can change when someone edits the schema. Codex can only learn this information from the first line of the listing tool's description, which mentions that the schema returns along with the page.

The valid value types are fixed and defined in packages/shared/src/types/record.ts on osFoundry's frontend. There are 16 types: text, number, date, boolean, email, phone, url, select, multi_select, currency, percentage, rating, relation, file, json, and formula. Each field has properties like is_required, is_unique, and specific configurations for the field type, such as max_length for text, min/max for number, max_stars for rating, options for the two select types, and expression for formula fields.

The select type is particularly tricky, as it has options like {value, label, color}. The value is stored, while the label is what users see. The RecordDataGrid.tsx component renders a select cell with options.find((o) => o.value === params.value), and if no match is found, it falls back to String(params.value) in a disabled chip.

If a permissive validation allows "In progress" as a value for a field that should only be "in_progress", the grid will display the value, albeit without color and invisible when filtering or grouping by value. This inconsistent display can mislead users who only see labels or a message from a person. Someone must step in to catch such inconsistencies.

When the record validation fails, the osFoundry API responds with {ok: false, error: {message}}. The tools within the osFoundry desktop app for integrated agents (src-tauri/src/record_tools.rs) forward this error message unmodified to the model. The comment explains that the API error message typically names the field that failed validation, which is sufficient for a self-correcting retry.

A unit test in the record tools uses values.status is not a valid option as an example of this message. While this usually suffices for a retry, it's worth evaluating how well this approach catches all validation issues.

In the rebuild process, four levels of detail are measured in case of a validation failure. The terse level only includes {error: validation_failed}, the field name, the invalid value, and allowed options or range. This is the level of detail provided by the rebuild: {error: validation_failed, fields: [{key: status, message: values.status must be one of the option values, got "In progress", allowed: [new, triaged, in_progress, fixed, wont_fix]}]}.

This level of detail comes directly from the rebuild execution and follows osFoundry's naming conventions for keys. The rebuild process executes record_store.py, which implements list_record_items, read_record_item, edit_record_item, and poll_resource_events on in-memory SQLite, with the same tool names, argument names, and limits as in production. The field types and config values come from record.ts.

The preview length (120 characters), result format, and validation rules are specific to the rebuild. An edit operation includes a BEGIN IMMEDIATE transaction, which handles idempotency checks, version comparison, validation, merging, version incrementing, event appending, and committing. Any problem during this process triggers a rollback of the entire edit. The triage.py script serves as a Codex implementation.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

This story

This is one outlet's version. Read the fullest account.

Read the original at dev.to →

More in Tech

Security Testing in Software Development: A Practical Guide to Finding Vulnerabilities Before Release

Security testing is an essential part of software development. As applications become increasingly networked and deal with high volumes of sensitive information, finding security vulnerabilities early…

  • Security testing crucial for modern software development
  • Identifies vulnerabilities, issues, misconfigurations before release
  • Six key types: SAST, DAST, SCA, vulnerability scanning, penetration testing, threat modeling

Zero-Upload Image Processing: Compressing, Cropping, and Removing Backgrounds in Browser RAM (Zero-Cloud Blueprint 2026)

Why are we sending confidential family photos, passport scans, and client assets across oceans just to delete white pixels?

  • Zero-upload image processing eliminates need to send sensitive documents over internet
  • Browser RAM handles segmentation, cropping, compression, and encoding
  • Zero-cloud approach offers unlimited processing with faster latency than cloud APIs

Repurposing closed-source retro game sticks into secure homelab nodes via custom kernels

The Genesis of the $20 Node: Unorthodox Hardware Repurposing and Architectural Reclamation The proliferation of inexpensive emulation sticks creates a predetermined linear lifecycle: brief consumer…

  • $20 retro gaming sticks repurposed as secure homelab nodes
  • Custom Alpine Linux 3.23 image bypasses vendor's closed-source firmware
  • ESP32-C6 microcontroller added for network connectivity

A Searchable Interview Index Without a Complicated System

A notebook can hold a wonderful conversation and still hide it from its owner. I remember the subject, the setting, perhaps even the weather, but not which file contains the detail I need.

  • Interview index simplifies locating valuable information
  • Everyday language in subject column improves searchability
  • Simple spreadsheet system with clear naming conventions

More from Thursday 12 November →