{"id":"009ac5c7-514d-47ea-a25f-e94f47b6d64f","arxiv_id":"2412.09721","paper_version":1,"verdict":"ACCEPT","confidence":"MODERATE","novelty_score":6.0,"correctness_risk":"low","formal_verification":"none","parameter_count":0,"one_line_summary":"Felis describes Rubin Observatory catalog schemas, validates them with Pydantic, and generates SQL and TAP_SCHEMA metadata.","lead":"Felis is a new data description language and toolset developed by the Vera C. Rubin Observatory team for defining the semantics and metadata of astronomical data catalogs. It lets observatories describe catalog structure, units, and relationships in human-readable YAML, then generate database schemas and TAP service metadata.","discovery_kind":"new_method","skeptic_critique":{"model":"deepseek-v4-flash","headline":"Unstated TAP_SCHEMA mapping and validation details leave a semantic-fidelity gap, but public code and deployment mitigate the risk.","rationale":"The reader's weakest assumption identified the same concern: semantic completeness and the sufficiency of Pydantic validation for the Felis-to-TAP_SCHEMA mapping. I agree that this is the most load-bearing point, because an unnoticed mapping error would corrupt all downstream artifacts (DDL, TAP_SCHEMA, documentation). However, the paper is a software description with modest claims; it points to a public repository and to actual deployment in the Rubin Science Platform, which provides independent evidence that the pipeline works in practice. The absence of a formal proof or detailed conformance description is a gap, but not a demonstrated error. The proposed check would settle whether the gap is real by testing the validator's behavior on deliberately malformed schemas. Until such a test is run, the existing evidence supports acceptance without changing the reader's verdict.","tokens_in":3058,"tokens_out":7835,"duration_ms":82889,"concrete_test":"Clone lsst/felis and construct a minimal YAML schema containing a foreign key referencing a non-existent table or column, plus a column whose Felis datatype has no TAP_SCHEMA mapping and a UCD not in the IVOA vocabulary. Run the Felis CLI's schema-validation command and then the TAP_SCHEMA population command on this file. If either command succeeds without an error, the validation is incomplete and the semantic-fidelity concern lands; if it fails, the concern is mitigated.","verdict_should_be":"UNCHANGED","load_bearing_attack":"The central claim that Felis provides a single source of truth for catalog semantics depends on the chain from Felis YAML to DDL and TAP_SCHEMA being semantically lossless. Section 3 describes Pydantic validation with 'business rules' but gives only one example (unique table names); it does not state that foreign keys are checked for referential integrity, that datatype mappings are complete, or that UCD/unit vocabularies are validated. Section 6 describes populating TAP_SCHEMA but does not describe the mapping logic or any conformance tests against IVOA TAP_SCHEMA constraints. Consequently, a Felis schema that passes validation could still generate a TAP_SCHEMA with dangling references, illegal datatypes, or invalid UCDs, which would break the TAP service and undermine the paper's core claim. The public repository and real deployment at Rubin are independent evidence, but the paper itself does not document this crucial part of the pipeline.","agreement_with_reader":"agree"},"referee_report":{"model":"deepseek-v4-flash","summary":"The paper describes Felis, a YAML-based data description language and Python toolset developed by the Vera C. Rubin Observatory Data Management team. Felis defines catalog structure and semantic metadata (units, UCDs, descriptions, constraints, relationships) using a Pydantic-based data model, validates schemas upon loading, generates DDL for PostgreSQL and MySQL, and populates IVOA TAP_SCHEMA tables for the Rubin Science Platform's TAP services. The paper also reports on its use for the Rubin SDM Schemas, CI-based validation via GitHub workflows, an online schema browser, and the SIAv2 service.","tokens_in":3191,"tokens_out":4570,"duration_ms":45811,"significance":"If the paper's claims hold, Felis is a genuinely useful contribution to astronomical data management: it addresses the well-known limitation that DDL cannot express semantic metadata, and it offers a single-source-of-truth approach that has been deployed operationally at Rubin. The public GitHub repository and the real-world adoption for the Rubin SDM Schemas and SIAv2 are concrete strengths. The paper does not provide a formal proof of semantic losslessness or a complete test suite, but the main weakness is not the absence of proofs—it is the lack of detail on two load-bearing parts of the pipeline: the actual validation rules and the YAML-to-TAP_SCHEMA mapping logic.","major_comments":[{"comment":"The description of validation is too vague to support the paper's central claim that Felis ensures schema correctness. Only one example of a 'business rule' is given (unique table names), and the paper does not state whether foreign-key referential integrity is checked, whether the Felis datatype mappings cover all target database types, or whether values such as UCDs and units are validated against controlled vocabularies. Please list the actual set of enforced validation rules, or explicitly state which semantic aspects are stored without validation.","section":"3. Schema Validation"},{"comment":"The paper states that Felis 'may also populate a TAP_SCHEMA database' but gives no description of the mapping logic from the Felis YAML model to the TAP_SCHEMA tables. Without this, the reader cannot assess whether the generated TAP_SCHEMA faithfully preserves the input semantics, which is the key promise of the 'single source of truth' claim. Please include a description of the mapping (or a reference to a documentation page), and report any conformance tests or validation checks against the IVOA TAP_SCHEMA constraints.","section":"6. DDL Generation"},{"comment":"The paper lacks reproduction instructions: it does not specify versions of Felis and Pydantic, does not give a concrete example invocation (e.g., how to run 'felis' on an example YAML file), and does not reference a test suite or CI status in the repository. For a software-description paper, providing a short 'getting started' example or a link to a documented demonstration would materially increase the verifiability of the claims.","section":"Entire manuscript"}],"minor_comments":[{"comment":"The example uses the URI 'resource://...' without any explanation of how this scheme is resolved; consider replacing it with a concrete example that a reader can try.","section":"4. Using the Python API"},{"comment":"The paper references 'Figure 1. ERD diagram of the schema data model' but the figure is not included in the text submitted for review; please ensure the figure is present and legible in the final version.","section":"2. Schema Data Model"},{"comment":"A small table mapping the most common Felis types (boolean, int, char, string, etc.) to PostgreSQL, MySQL, and VOTable types would make Section 5 concrete and more useful.","section":"5. Felis Data Types"},{"comment":"The author list and affiliations contain a typo: 'V era' should be 'Vera' (in the first affiliation and the acknowledgment).","section":"1. Introduction"},{"comment":"The reference to Jenness et al. 2025 is incomplete ('vol. TBD', '999 TBD'); please update with the full bibliographic data if available at the time of publication.","section":"References"}],"recommendation":"major_revision","confidential_remarks":"The paper is a solid ADASS-style software description, but the semantic-fidelity gap identified in the major comments is a real issue for the 'single source of truth' claim. The authors can likely address it in a short revision by adding a few paragraphs and pointers to the repository. I recommend major_revision rather than accept because the missing mapping/validation details are central to the paper's stated purpose, not merely cosmetic. I would be comfortable accepting the revised version if the authors add the requested details or clearly scope the claims to the information actually documented."},"author_rebuttal":null,"desk_editor":{"model":"deepseek-v4-flash","letter":"Felis is a genuinely useful tool paper. The authors have built a YAML-based catalog schema language with Pydantic validation, and it's actually in production at Rubin, generating DDL and populating TAP_SCHEMA for the Rubin Science Platform. That combination is new as far as I know, and the paper is honest about what it does and doesn't do.\n\nWhat I like: the data model is clearly described, the validation approach is sensible, and the authors point to the public repo and schema browser. The SIAv2 example shows real adoption beyond internal use. The claims are modest; no one is overselling this as a physics result.\n\nSoft spots: the TAP_SCHEMA mapping is treated as a black box. The paper says Felis generates insert statements to populate TAP_SCHEMA, but doesn't describe how columns, datatypes, UCDs, and foreign keys are translated, or whether the output is validated against IVOA TAP_SCHEMA constraints. That is exactly where semantic fidelity could break. The paper also doesn't compare with earlier catalog metadata approaches like VOSchemas or CADC's TAP utilities, so the novelty claim is not well contextualized. These are real gaps, but for a short ADASS-style paper they're not disqualifying; the code is public and the deployment is live, so an interested reader can dig in.\n\nThe deeper question is whether 'single source of truth' is justified. That depends on the mapping being semantically lossless, which the paper asserts but doesn't demonstrate. That said, nothing here is wrong; the tool does what it says, and the risk profile is typical for engineering software. I'd send this to a referee who can look at the repo and ask for a conformance test or a mapping spec.\n\nWho benefits: people working on VO services, catalog metadata, or Rubin data products. For that audience, this is a useful reference. For a general physics reader, it's less interesting, but that's not a flaw.\n\nMy recommendation: accept with minor revisions, asking for a clearer description of the TAP_SCHEMA mapping and any tests that ensure conformance. It deserves peer review.","headline":"A solid, honest software description paper for Felis, with the TAP_SCHEMA mapping under-specified but public code and real deployment carrying the weight.","tokens_in":3725,"tokens_out":2649,"would_cite":true,"duration_ms":26777,"reading_group":"maybe","serious_thinker":"yes","would_accept_peer_review":true},"rs_alignment":null,"lean_confirmation":null,"pith_extraction":{"msc":[],"pacs":[],"model":"deepseek-v4-flash","headline":"Felis is a YAML-based data model that lets the Rubin Observatory define, validate, and publish its catalog schemas from a single source.","keywords":["Felis","data description language","catalog metadata","TAP_SCHEMA","IVOA TAP","YAML","Pydantic","Rubin Observatory"],"falsifier":"Compare every table, column, unit, UCD, constraint, and index in the public Rubin TAP_SCHEMA served by the Rubin Science Platform against the Felis YAML definitions in the SDM Schemas repository; a single column whose unit, UCD, or constraint differs from the YAML would show that Felis is not in fact the single source of truth.","tokens_in":2878,"feed_emoji":"🗄️","tokens_out":6156,"duration_ms":54551,"temperature":0.7,"pith_summary":"The paper is trying to establish that Felis, a YAML-based data description language and Python toolset, can serve as the authoritative definition of a scientific data catalog, including semantic metadata that ordinary DDL cannot express. It argues that a single validated Felis model can generate the database DDL and populate the IVOA TAP_SCHEMA tables used by the Rubin Science Platform, making the schema uniformly defined and checked before publication. This matters because astronomy catalogs are consumed through TAP services, and without such a description, units, UCDs, constraints, and column relationships live only in documentation or in the database, where they can drift out of sync.","feed_headline":"Felis puts one YAML file behind Rubin's public catalogs","feed_subtitle":"Validated once, the same model generates database DDL and TAP_SCHEMA, keeping Rubin's public schema in sync.","key_machinery":"The carrying mechanism is the Felis schema model: a hierarchy of Pydantic BaseModel classes, named Schema, Table, Column, Constraint, and Index, expressed in YAML. Pydantic's Field declarations enforce types, defaults, and required presence, while custom Python validator functions enforce business rules such as unique table names; a failed validation blocks loading. From the validated in-memory model, extension modules generate SQL DDL or TAP_SCHEMA insert statements, and the same Felis datatypes carry mappings to PostgreSQL, MySQL, and VOTable types.","core_discovery":"Felis is a data description language whose core is a Pydantic data model. Every schema object is a Python class inheriting from Pydantic's BaseModel, and the YAML files are validated on load by Field rules and by extra 'business rule' validators that catch problems such as duplicate table names. Felis defines its own datatype system, mapping types like int and string to target SQL dialects and to VOTable types, and from a validated model it can generate DDL for PostgreSQL and MySQL or insert statements that populate TAP_SCHEMA. The paper reports that the Rubin Science Data Model Schemas are maintained as Felis files in a Git repository, versioned with Git tags, checked in CI, and used by the Rubin Science Platform's TAP services and SIAv2.","pith_inferences":["If the same pattern is adopted by other survey projects, a single YAML catalog description could become a common interchange format for catalog semantics, not just a Rubin internal tool.","A concrete audit test would be to parse an existing Rubin TAP_SCHEMA back into Felis and diff it against the source YAML; any mismatch would reveal whether the mapping is lossless.","Because Felis's datatype set is small and explicitly mapped, adding a new SQL dialect or a non-relational target would be localized to the type-mapping layer, potentially lowering the cost of multi-platform catalog publication."],"forward_implications":["Rubin gets a single source of truth for each public catalog: the YAML file is the schema, and DDL and TAP_SCHEMA are derived artifacts.","Schema editing becomes reviewable: because schemas live in Git with tags and CI validation, proposed changes are checked before they reach the database.","Any consumer that can read VOTable metadata can rely on TAP_SCHEMA being consistent with the published schema, since both come from the same validated model.","Felis's planned migration generation and tabular-data conversion would let the schema definition propagate to both schema versions and data files."],"supporting_citations":[{"why":"Defines the Table Access Protocol and the TAP_SCHEMA tables that Felis populates.","marker":"Dowler et al. 2019"},{"why":"Supplies the UCD1+ controlled vocabulary that Felis attaches to columns as semantic metadata.","marker":"Cecconi et al. 2023"},{"why":"Defines the Rubin Science Data Model Schemas that are now authored in Felis format.","marker":"Jurić et al. 2023"},{"why":"Documents Rubin's SIAv2 service, which uses Felis to define the data model and check VOTable conformance.","marker":"Jenness et al. 2025"}],"fun_headline_variants":["Felis: one YAML model to describe and validate Rubin's catalogs","Rubin's Felis turns YAML catalog metadata into TAP_SCHEMA","Felis: Pydantic-powered catalog definitions for Rubin's TAP services","A schema language that keeps Rubin's public catalogs in sync","Felis: from YAML to DDL and TAP_SCHEMA for Rubin Observatory"],"cache_read_input_tokens":3200,"weakest_assumption_plain":"The whole approach rests on the assumption that a Felis YAML file, validated by Pydantic rules and custom checks, captures every semantically important detail of the catalog, so that generating DDL and TAP_SCHEMA from it cannot drop or distort information.","fun_headline_variants_meta":{"raw":{"variants":["Felis: one YAML model to describe and validate Rubin's catalogs","Rubin's Felis turns YAML catalog metadata into TAP_SCHEMA","Felis: Pydantic-powered catalog definitions for Rubin's TAP services","A schema language that keeps Rubin's public catalogs in sync","Felis: from YAML to DDL and TAP_SCHEMA for Rubin Observatory"]},"model":"deepseek-v4-flash","effort":"low","cost_usd":0.000156,"raw_usage":{"total_tokens":1151,"prompt_tokens":810,"completion_tokens":341,"prompt_tokens_details":{"cached_tokens":384},"prompt_cache_hit_tokens":384,"prompt_cache_miss_tokens":426,"completion_tokens_details":{"reasoning_tokens":253}},"tokens_in":426,"tokens_out":341,"duration_ms":3782,"temperature":1.0,"reasoning_tokens":253,"cache_read_input_tokens":384,"cache_creation_input_tokens":0},"cache_creation_input_tokens":0},"created_at":"2026-08-11T16:46:45.612943+00:00","model_set":{"reader":"deepseek-v4-flash"},"falsifier":"Compare every table, column, unit, UCD, constraint, and index in the public Rubin TAP_SCHEMA served by the Rubin Science Platform against the Felis YAML definitions in the SDM Schemas repository; a single column whose unit, UCD, or constraint differs from the YAML would show that Felis is not in fact the single source of truth.","supporting_citations":[{"cited_title":"2019, Table Access Protocol Version 1.1 , IVOA Recommendation 27 September 2019","cited_arxiv_id":null,"evidence_quote":"Defines the Table Access Protocol and the TAP_SCHEMA tables that Felis populates."},{"cited_title":"2023, UCD1+ controlled vocabulary - Updated List of Terms Version 1.5 Version 1.5 , IVOA Endorsed Note 25 January 2023","cited_arxiv_id":null,"evidence_quote":"Supplies the UCD1+ controlled vocabulary that Felis attaches to columns as semantic metadata."},{"cited_title":"P., & Salnikov, A","cited_arxiv_id":null,"evidence_quote":"Documents Rubin's SIAv2 service, which uses Felis to define the data model and check VOTable conformance."}],"review_version":1}