2 Commits

Author SHA1 Message Date
root
2491c38d4b Fail-fast and log HTTP response on PR/issue creation
All checks were successful
Deploy Skill to OCI / deploy (push) Successful in 26s
KB Health Check / check-links (push) Successful in 58s
Previous curl calls ignored exit codes — PR/issue creation was silently
failing (branch got pushed but no PR/issue landed) while the step reported
green. Now each curl captures the response body and HTTP status, prints
both for debugging, and exits non-zero if status != 201.

Also dropped the labels field from the issue payload — Gitea rejects
issue creation when referenced labels don't exist in the repo, which
may have contributed to the silent failure. Labels can be added
manually post-creation.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 17:45:12 -03:00
d9b1bb52a4 update ADB serverless KB for AI Lakehouse workload 2026-04-24 15:50:05 -03:00
4 changed files with 144 additions and 23 deletions

View File

@@ -100,20 +100,28 @@ jobs:
| sed "s#https://#https://sku-refresh-bot:${GITEA_TOKEN}@#")
git push "$REMOTE" "$BRANCH"
# Open PR via Gitea API
# Open PR via Gitea API (fail-fast + log response)
OWNER=$(echo "$GITEA_REPO" | cut -d/ -f1)
REPO=$(echo "$GITEA_REPO" | cut -d/ -f2)
curl -sS -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
-d "$(jq -n \
PAYLOAD=$(jq -n \
--arg title "chore(pricing): monthly SKU refresh ${DATE}" \
--arg head "$BRANCH" \
--arg base "main" \
--arg body "$(printf 'Automated refresh — [refresh log artifact](../../actions).\n\n```\n%s\n```' \
--arg body "$(printf 'Automated refresh — see run artifact for full refresh/discover logs.\n\n```\n%s\n```' \
"$(tail -40 /tmp/refresh.log)")" \
'{title:$title, head:$head, base:$base, body:$body}')"
'{title:$title, head:$head, base:$base, body:$body}')
echo "Creating PR ${BRANCH} -> main ..."
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/pulls" \
-d "$PAYLOAD")
echo "$RESPONSE"
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
if [ "$STATUS" != "201" ]; then
echo "::error::PR creation failed with HTTP $STATUS"
exit 1
fi
- name: Open issue for new SKUs
if: steps.discover.outputs.new_count != '0'
@@ -130,14 +138,22 @@ jobs:
BODY=$(printf '## %s new SKUs detected in Oracle API\n\n**Detected:** %s\n\nThese SKUs are present in the Oracle public pricing API but not yet in `kb/pricing/oci-sku-catalog.yaml`. Filter: serviceCategory values already represented in our catalog (so only relevant families show up).\n\n### Full listing\n\n```\n%s\n```\n\n### Next step\n\nReview and add relevant entries to `kb/pricing/oci-sku-catalog.yaml` under the appropriate category block. After merging, prices will be picked up automatically on the next monthly refresh.\n' \
"$NEW_COUNT" "$DATE" "$(cat /tmp/discover.log)")
curl -sS -X POST \
PAYLOAD=$(jq -n \
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
--arg body "$BODY" \
'{title:$title, body:$body}')
echo "Creating issue: ${NEW_COUNT} new SKUs..."
RESPONSE=$(curl -sS -w "\nHTTP_STATUS=%{http_code}\n" -X POST \
-H "Authorization: token ${GITEA_TOKEN}" \
-H "Content-Type: application/json" \
"${GITEA_SERVER}/api/v1/repos/${OWNER}/${REPO}/issues" \
-d "$(jq -n \
--arg title "SKU catalog: ${NEW_COUNT} new SKUs to review (${DATE})" \
--arg body "$BODY" \
'{title:$title, body:$body, labels:["automation","sku-catalog"]}')"
-d "$PAYLOAD")
echo "$RESPONSE"
STATUS=$(echo "$RESPONSE" | grep -oE 'HTTP_STATUS=[0-9]+' | cut -d= -f2)
if [ "$STATUS" != "201" ]; then
echo "::error::Issue creation failed with HTTP $STATUS"
exit 1
fi
- name: Summary
if: always()

View File

@@ -27,7 +27,7 @@
# =============================================================================
---
last_verified: "2026-03-14"
last_verified: "2026-04-24"
maintained_by: "Field Architecture Team"
versions:
@@ -338,6 +338,69 @@ features:
adb_s:
"23ai": { status: "GA_CAVEAT", notes: "--resource-pool-summary works on CLI 3.73+. --autonomous-database-maintenance-window has JSON serialization bug on CLI 3.73.1 AND 3.75.0. Must use Console for maintenance window." }
- name: "Lakehouse External Table Cache / Lake Cache"
category: "operations"
matrix:
adb_s:
"23ai":
status: "UNTESTED"
notes: "Officially documented for Lakehouse workload. Caches external-table data locally to accelerate repeat reads. Field team has not yet validated production behavior."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "UNTESTED"
notes: "Documented for AI Lakehouse workload. Expect benefit on repeated reads over external data; validate eviction behavior and cache warmup in benchmarks."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
- name: "Apache Iceberg External Tables"
category: "operations"
matrix:
adb_s:
"23ai":
status: "LIMITED"
notes: "Official docs show support with important caveats: no partitioned Iceberg tables, no credential vending, no query-time time travel, and some snapshot/schema changes require recreating the external table."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "LIMITED"
notes: "Same documented limitations as 23ai unless field testing proves otherwise. Treat as fit-for-purpose, not transparent parity with native Iceberg engines."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
- name: "TP / TPURGENT Service Names on Lakehouse"
category: "operations"
matrix:
adb_s:
"23ai":
status: "UNTESTED"
notes: "Need field confirmation by exact release/build. Use docs/release notes before promising availability on older estates."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
"26ai":
status: "GA_CAVEAT"
notes: "Officially released for Lakehouse workload. Useful to explain mixed-workload support, but benchmark service behavior under real concurrency before positioning as OLTP-equivalent."
contributor:
name: "Codex"
team: "Field Architecture"
date: "2026-04-24"
confidence: "doc-validated"
# =============================================================================
# HOW TO ADD A NEW FEATURE
# =============================================================================

View File

@@ -1,5 +1,5 @@
---
last_verified: 2026-03-14
last_verified: 2026-04-24
description: |
Real-world limits that differ from official documentation or are not
well-documented. These come from actual deployment experience.
@@ -75,3 +75,15 @@ limits:
request limit increase via support ticket. Increases are usually
approved within 1-2 business days.
recommendation: "Request limit increases early in project planning"
- service: ADB-S Lakehouse
limit: "Apache Iceberg interoperability"
documented: "Lakehouse can query Iceberg tables"
real_world: |
The capability is useful, but not transparent parity with native
Iceberg engines. Current documented constraints include: no partitioned
Iceberg tables, no credential vending, no query-time time travel, and
some schema/snapshot changes requiring external table recreation.
Architects should treat this as selective interoperability, not a
drop-in replacement for every Iceberg pattern already in use.
recommendation: "Validate exact Iceberg table design and metadata workflow before positioning ADB Lakehouse as a universal Iceberg endpoint"

View File

@@ -1,8 +1,8 @@
# OCI Service: Autonomous Database Serverless (ADB-S)
# Last verified: 2026-03
# Last verified: 2026-04
service:
name: "Autonomous Database Serverless (ADB-S)"
name: "Autonomous AI Database Serverless (ADB-S)"
id: adb_serverless
category: database
color: "#AA643B"
@@ -35,13 +35,17 @@ limits:
variants:
- id: adb_s
name: "Autonomous Database Serverless (ADB-S)"
name: "Autonomous AI Database Serverless (ADB-S)"
description: "Shared Exadata infrastructure, fully managed, auto-scaling"
workload_types:
- ATP (Transaction Processing / Mixed)
- ADW (Data Warehouse / Analytics)
- AJD (JSON Document Store)
- APEX (Low-code application development)
- "Autonomous AI Transaction Processing (TP) - app-facing OLTP and mixed workloads on local database-managed data"
- "Autonomous AI Lakehouse - SQL across database-local plus external/open-format data (Object Storage, Iceberg, federated catalogs)"
- "Autonomous JSON Database - document-centric JSON development pattern"
- "APEX Application Development - low-code application development"
workload_notes:
- "Since October 2025 Oracle documentation uses Autonomous AI Database naming for workload types."
- "Lakehouse is not a separate database engine; it is a workload specialization with an explicit external-data plane."
- "Lakehouse now also exposes TP and TPURGENT predefined service names, so do not assume warehouse-only service semantics."
- id: adb_d
name: "Autonomous Database on Dedicated Exadata (ADB-D)"
@@ -59,6 +63,7 @@ when_to_use:
- "JSON document workloads (AJD)"
- "Rapid APEX application development"
- "Data warehouse / analytics with auto-scaling"
- "Need Lakehouse-style SQL over Object Storage / Apache Iceberg without copying all data into the database"
when_not_to_use:
- "Non-Oracle database engines (use MySQL HeatWave, PostgreSQL, NoSQL)"
@@ -66,6 +71,7 @@ when_not_to_use:
- "Need RAC but not ADB-D budget → use ExaCS or DBCS VM"
- "Workloads requiring specific DB patches not yet in ADB"
- "Extreme IOPS requirements > what Exadata provides"
- "Choose TP workload if the dominant path is OLTP write-heavy access on database-local data and external/open-table access is peripheral"
sizing:
adb_s:
@@ -114,6 +120,22 @@ gotchas:
severity: LOW
description: "ADB now defaults to Oracle 26ai in all commercial regions. 19c is legacy. Verify customer version requirements."
- id: adb_lakehouse_not_separate_engine
severity: MEDIUM
description: "Lakehouse is a workload specialization inside ADB Serverless, not a separate database engine or separate managed service."
- id: adb_lakehouse_external_data_plane
severity: MEDIUM
description: "Lakehouse value appears when Object Storage / Iceberg / open-format access is structural. If the dataset is fully local and OLTP-dominant, TP is usually the cleaner fit."
- id: adb_lakehouse_iceberg_limits
severity: HIGH
description: "Current Iceberg support has material caveats: no partitioned Iceberg tables, no credential vending, no query-time time travel, and some snapshot/schema changes require recreating the external table."
- id: adb_lakehouse_tp_services
severity: LOW
description: "Lakehouse now supports TP and TPURGENT predefined service names. Do not model it as ADW-style query-only connectivity."
implied_dependencies:
- service: service_gateway
reason: "Required for automated backups to Object Storage"
@@ -144,8 +166,16 @@ references:
documentation: "https://docs.oracle.com/en/cloud/paas/autonomous-database/"
pricing: "https://www.oracle.com/autonomous-database/pricing/"
sizing_guide: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/autonomous-database-cpu.html"
workload_types: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/about-autonomous-database-workloads.html"
lakehouse: "https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/lake-lakehouse.html"
iceberg: "https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/query-external-data-apache-iceberg.html"
lakehouse_tp_services: "https://docs.oracle.com/iaas/releasenotes/autonomous-database-serverless/2025-10-tp-tpurgent-predefined-db-service-names-for-lakehouse-workload.htm"
data_lake_accelerator: "https://docs.oracle.com/iaas/releasenotes/autonomous-database-serverless/2025-11-data-lake-accelerator.htm"
changelog:
- date: "2026-04-24"
contributor: { name: "Codex", team: "Field Architecture" }
change: "Updated workload taxonomy to Autonomous AI naming; added Lakehouse selection guidance, Iceberg caveats, TP/TPURGENT note, and official references"
- date: "2026-03-14"
contributor: { name: "Diego Cabrera", team: "Field Architecture" }
change: "Initial creation with sizing rules, gotchas, competitive notes, HA/DR options"