Extract a complete, source-traceable legacy evidence specification for one Oracle Forms module from Forms XML/FMT/FMB/FMX, PLL/PLD, DDL, message catalogues, menus/object libraries, and screenshots. Use for fresh or incremental reverse engineering when the output must preserve every evidenced screen region, tab, field, operation, rule, message, database dependency, provenance locator, uncertainty, and source-supported detail without inventing target requirements, target architecture, target tests, POC assumptions, or implementation decisions.
66
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
The compiler constructs a normalized evidence model in memory before rendering one linked legacy-evidence package. The model records what supplied artifacts establish, where each fact came from, what remains unknown, and how a later source update changes coverage.
The durable Markdown describes the legacy system only. It is not a target requirement, target design, architecture decision, target test suite, POC assumption, approval, or implementation-readiness statement.
The normal durable output is:
evidence/features/<feature-slug>/
<module>-<title>-specification.md
<module>-operation-details.md
<module>-decoded-source.md
<module>-database-reference.mdCompiler JSON, specialist outputs, manifests, and guard results belong in a uniquely named operating-system temporary directory unless the user explicitly requests durable diagnostic evidence.
The master Markdown implements all 22 sections and Appendices A-J in specification-template.md and retains every paired oracle-evidence marker. Children carry exhaustive normalized operation records, exact decoded source, and complete DDL records. All four documents share module/run/fingerprint metadata and link within the package. Completeness is validated across the package; the master remains the human-review surface.
The human-facing governed identifier is:
MOD-<MODULE-ID>Semantic local keys are optional and limited to material groups:
MOD-<MODULE-ID>#section.<slug>
MOD-<MODULE-ID>#tab.<slug>
MOD-<MODULE-ID>#grid.<slug>
MOD-<MODULE-ID>#operation.<slug>
MOD-<MODULE-ID>#rule.<slug>Use natural Oracle locators for leaf evidence:
BLOCK.ITEM;Do not generate governed FR, FLD, BR, MSG, TC, or OQ IDs during evidence extraction.
The transient model may use deterministic machine keys such as SRC-*, FACT-*, PATH-*, and GAP-* for merging, deltas, and validation. These keys are not requirement IDs and are not the primary human identity of document rows.
{
"schema_version": "oracle-module-evidence/1.x",
"extractor": {},
"run": {},
"sources": [],
"modules": [],
"ddl": {},
"artifacts": {
"source_inventory": {"records": []},
"normalized_evidence": {"records": []},
"behavior_ledger": {"records": []},
"coverage": {"records": []},
"gaps": {"records": []},
"source_delta": {"records": []}
},
"incremental": {},
"self_check": {}
}Each supplied or expected source record carries:
{
"source_id": "SRC-...",
"relative_path": "form/glasct01_fmb.xml",
"source_role": "forms_xml",
"module_association": "GLASCT01",
"media_type": "application/xml",
"size_bytes": 123,
"sha256": "...",
"availability": "supplied|expected_missing|removed",
"parse_status": "parsed|partial|binary_only|unparseable|not_applicable",
"parse_warnings": []
}Every supplied file must be accounted for. Recurse through all input descendants.
A module record includes:
Every Forms item must have one BLOCK.ITEM locator and a visible-region placement status:
{
"block": "CTT",
"item": "CTT_TITLE",
"canvas": "MAIN",
"tab_page": "DETAILS",
"region_kind": "tab",
"visible": true,
"placement_status": "resolved"
}Unknown placement becomes a precise gap; it is not silently assigned.
Create separate path records for each reachable or decoded operation entry point:
{
"path_id": "PATH-...",
"operation": "query|insert|update|delete|validate|save|commit|rollback|custom",
"entry_point": {"symbol": "KEY-COMMIT", "scope": "FORM"},
"call_chain": [],
"preconditions": [],
"validations": [],
"branches": [],
"defaults_and_derivations": [],
"database_reads": [],
"database_writes": [],
"database_effects": [],
"messages": [],
"dependency_checks": [],
"side_effects": [],
"transaction": {},
"outcomes": [],
"unresolved_calls": [],
"locators": [],
"confidence": "high|medium|low",
"gap_ids": []
}The human document groups paths under MOD-<MODULE>#operation.<slug> and identifies individual entries by their natural trigger/routine name, not by the transient path hash.
Capture relevant:
DDL is authoritative for physical definitions when supplied. Forms and PL/SQL remain evidence of how those definitions are used.
Inventory every image. Create a module screenshot association when at least one conservative signal is present:
Store:
{
"path": "ui/GLASCT01 Maintain Standard Contract.png",
"sha256": "...",
"association_basis": "filename_contains_module_id, title_token_overlap_0.67",
"association_score": 0.93,
"association_confidence": "high",
"matched_module_id": "GLASCT01",
"matched_title": "Maintain Standard Contract"
}Render all plausible candidates as relative, URL-encoded Markdown image links.
Machine gap records retain stable reconciliation IDs internally:
{
"gap_id": "GAP-...",
"gap_kind": "source_missing|binary_only|unparseable|partial_parse|extraction_uncovered|conflicting_evidence|runtime_only|unresolved_call|missing_message_text|missing_ddl|ambiguous_mapping",
"subject": "human-readable missing or uncertain subject",
"status": "open|narrowed|resolved|reopened",
"why_expected": "...",
"expected_by_locators": [],
"affected_operations": [],
"affected_behavior": "...",
"available_fallback_evidence": "...",
"classification": "source_gap|extraction_gap|evidence_conflict|runtime_validation_gap",
"recommended_action": "...",
"resolution_evidence": [],
"history": []
}The human specification presents the subject, kind/status, impact, fallback evidence, and acquisition action. It need not expose the machine gap ID.
A gap resolves only when cited evidence establishes the subject. A design decision about future behavior does not resolve a legacy source gap.
Every material evidence dimension has:
{
"metric_id": "COV-...",
"dimension": "items|visual_placement|effective_crud|operation_paths|ddl|messages|...",
"denominator": 10,
"numerator": 8,
"exclusions": [],
"unresolved_count": 2,
"status": "complete|complete_with_registered_gaps|incomplete"
}Completeness means every denominator member is extracted, explicitly excluded from that metric for a source-backed reason, or represented by a precise gap. It does not mean the legacy system is fully understood or the target is ready.
open, narrowed, resolved, and reopened.An older specification is a read-only semantic oracle. Candidate anchors include natural Oracle locators, Forms properties, routine names, database objects, message codes, and source filenames. Retain an anchor only when current evidence independently supports it. Target-only identifiers and prose are excluded.
Fail compilation when:
BLOCK.ITEM locator;