Chorus
view release on metacpan or search on metacpan
agent/skills/chorus-feed.md view on Meta::CPAN
**Extension case:**
- Update `Frame catalog` (new slots)
- Update `Slot dictionary`
- Add rules to `Rule catalog`
- Generate the new YAML files
- Add required helpers to `Helpers.pm`
- Verify that new slots do not conflict with those
of other agents (Slot dictionary of the index)
**New domain case:**
- Apply Mode A (Phases 1 to 5.5) on the fragment only
- Determine the position of the new agent in the pipeline:
- Does it read a slot set by an existing agent? â after it
- Does it set a slot consumed by an existing agent? â before it
- Update `index.org`: insert the new agent at the correct position
- â Verify that the insertion does not break the chain of targeting slots
### Phase B4 â Enrichment closing
Update `README.org`:
- Add the row in `Corpus` (number + file + source + date)
agent/skills/chorus-pdf.md view on Meta::CPAN
TEXT
- Extract all text in reading order (top to bottom, left to right).
- For multi-column layouts: extract column 1 fully, then column 2. Insert a blank line between columns.
- Preserve section numbers, article numbers, and clause references exactly as printed.
- Preserve all footnote markers and footnote text (append footnotes at end of page output).
- Do not summarize, paraphrase, or omit any text.
TABLES
- Reconstruct every table in Markdown format (pipe syntax).
- Preserve all column headers, row labels, units, and footnote references inside the table.
- If a table spans multiple pages: output the fragment visible on this page; prefix it with
[TABLE CONTINUED â <table title or number>] if this is a continuation.
FIGURES AND DIAGRAMS
- For every figure, diagram, or illustration: output a block of the form:
[FIGURE <N> â <title or caption>]
<Structured description of all visual content:>
- Labeled dimensions, dimensions with units
- Named components and their spatial relationships
- Numerical values visible in or next to the figure
- Arrows, load paths, connection points, hinge symbols, support symbols
agent/skills/chorus-pdf.md view on Meta::CPAN
**"Figures are described but values seem invented"**
â LLMs can hallucinate values in dense technical diagrams. Always cross-check critical
normative values against the original PDF. Mark uncertain values with
`# TODO: verify against PDF §<N>` in `Helpers.pm`.
**"Auto mode: a text page was sent to vision unnecessarily"**
â The threshold `len(text.strip()) > 50` in `classify_pages` may be too low for sparse
pages (cover pages, blank pages, page numbers only). Increase to `> 200` if needed.
**"Chunk boundaries cut through a table"**
â The fragment is prefixed `[TABLE CONTINUED â ...]`. `chorus-feed` treats both
fragments as separate text blocks â rarely an issue for KB extraction.
**"Too slow â 54-page PDF with --auto takes a long time"**
â Only the vision pages hit the API. If 16/54 pages have figures: 4 chunks à ~30s = ~2 min.
The text pages (pdfminer) complete in seconds. Total: ~2â3 minutes for a 54-page standard.
**"Script exited with code 2 â nohup required"**
â The layout analysis detected ⥠16 figures. The script aborted before any API call.
Copy the `nohup` command printed to stderr and run it in a terminal:
```bash
nohup python3 $SANDBOX/agent/extract-pdf-<slug>.py > $SANDBOX/corpus/<NNN>-<slug>-vision.md.log 2>&1 &
agent/skills/chorus-strengthen.md view on Meta::CPAN
## Phase 5 â Enrichment roadmap
### 5.1 Group gaps by corrective action
Group all gaps into three buckets:
| Bucket | Content | Action |
|---|---|---|
| **A â Corpus clarification** | Gaps where the normative source is unclear or ambiguous | Need to re-read the original corpus §, possibly extract a correction text |
| **B â Rule adjustment** | Gaps where the corpus reference is known and the fix is a threshold / CONDITION change | Direct YAML edit (does not require `chorus-feed --enrich`) |
| **C â Missing coverage** | Gaps where the KB has no rule at all for this case | New rule needed â `chorus-feed --enrich` with a targeted corpus fragment |
### 5.2 Enrichment corpus recommendation
For bucket **C** (missing coverage), produce a recommendation:
```
Recommended enrichment corpus
ââââââââââââââââââââââââââââââ
For each missing-coverage gap, draft the normative text fragment that covers it.
This text should be passed to:
chorus-feed <sandbox-name> <corpus-correctif.txt> --enrich
Suggested corpus-correctif.txt content:
âââââââââââââââââââââââââââââââââââââââââ
[Gap #N â <type>/<slot>]
<Normative extract or paraphrase covering the missing rule.
Include: element type, triggering condition, threshold value, rejection reason.>
( run in 0.948 second using v1.01-cache-2.11-cpan-364913b4093 )